request.getParameterNames()的顺序

jcd*_*dmb 14 java servlets request

如何以与表单中相同的顺序获取HTML表单中的所有parameterNames.

即如果表单包含.... FirstName,LastName,MiddleName和Age.输出应该以相同的顺序出现

我尝试过使用以下内容,但这会改变输出的顺序:

Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements())
{
      String paramName =
(String)paramNames.nextElement();
      out.print(paramName);
}
Run Code Online (Sandbox Code Playgroud)

Man*_*res 8

我不认为HTTP规范中没有任何内容强制浏览器按照它们在表单中出现的顺序发送参数.您可以通过在参数名称前加一个数字来解决这个问题:

FirstName --> 0_FirstName
LastName --> 1_LastName
....
Run Code Online (Sandbox Code Playgroud)

之后,您基本上可以通过前缀对元素进行排序.这是一个丑陋的解决方案,但它是唯一的方法.就像是 ...

//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
    }
Run Code Online (Sandbox Code Playgroud)

顺便说一下 - 接收参数的顺序真的很重要吗?