Заказ request.getParameterNames()
Как получить все имена параметров в HTML-форме в
той же последовательности, что и в форме.
i.e, если форма содержит.... FirstName, LastName,
MiddleName и Age. выход должен появиться в
такая же последовательность
Я попытался использовать следующее, но это сдвигает
порядок вывода:
Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements())
{
String paramName =
(String)paramNames.nextElement();
out.print(paramName);
}
Ответы
Ответ 1
Я не думаю, что в спецификации HTTP нет ничего, что заставляет браузеры отправлять параметры в том порядке, в каком они появляются в форме. Вы можете работать с ним, указав номер на имя параметра, например:
FirstName --> 0_FirstName
LastName --> 1_LastName
....
После этого вы могли бы упорядочить элементы по префиксу. Это уродливое решение, но это единственный способ сделать это. Что-то вроде...
//Assuming you fill listOfParameters with all the parameters.
Collections.sort(listOfParameters, new Comparator<String>() {
int compare(String a,String b) {
return Integer.getInt(a.substring(0,a.indexOf("_"))) - Integer.getInt(a.substring(0,b.indexOf("_")))
}
}
);
for (String param : listOfParameters) {
//traverse in order of the prefix
}
Кстати, действительно ли имеет значение порядок, в котором вы получаете параметры?
Ответ 2
Ни один из ответов здесь действительно не ответил на мой вопрос. HttpServletRequest сохраняет все его параметры в HashMap, а у HashMap нет ORDER. Таким образом, я сохранил порядок параметров в упорядоченном массиве ArrayList и сохранил его в HttpSession, поэтому я мог получить порядок параметров, запросив ArrayList (который был сохранен в сеансе) и достигнуть того, что я хотел!
Ответ 3
request.getParameterNames ()
использует HashMap
внутренне, чтобы хранить пары значений имени полей формы. В этом нет порядка. если вам это нужно, тогда какое-либо соглашение об именах для параметров формы для управления порядком извлечения.
SortedSet temp = new SortedSet();
Enumeration enumeration = request.getParameterNames();
while (enumeration.hasMoreElements())
{
temp.add((String)enumeration.nextElement());
}
Ответ 4
Обновлено:
U может отсортировать пользователя для этого. обратите внимание, что u должен иметь все параметры с другим именем. (в данном случае это, скорее всего)
Напишите любой pref.ix в качестве имени параметра для ex.
<input type="text" name="1step">
<input type="text" name="2step">
и т.д.
то в java-коде вы можете написать
SortedSet ss = new TreeSet();
Enumeration<String> enm=request.getParameterNames();
while(enm.hasMoreElements())
{
String pname = enm.nextElement();
}
Iterator i=ss.iterator();
while(i.hasNext())
{
String param=(String)i.next();
String value=request.getParameter(param);
}
Ответ 5
HTML или Jsp Страница
<input type="text" name="1UserName">
<input type="text" name="2Password">
<input type="text" name="3MobileNo">
<input type="text" name="4country">
и т.д.
то в java-коде
SortedSet ss = new TreeSet();
Enumeration<String> enm=request.getParameterNames();
while(enm.hasMoreElements()){
String pname = enm.nextElement();
ss.add(pname);
}
Iterator i=ss.iterator();
while(i.hasNext()) {
String param=(String)i.next();
String value=request.getParameter(param);
}