是的,Servlet 规范保证了 返回的值和 中的条目的顺序。这段经文是这样写的:getParamterValues(String)
getParameterMap()
来自查询字符串和帖子正文的数据将聚合到请求参数集中。查询字符串数据显示在正文数据之前。例如,如果使用查询字符串 a=hello 和 a=goodbye&a=world 的后置正文发出请求,则生成的参数集将排序为 a=(hello, goodbye, world)。
(这来自 Servlet 规范(版本 2.4 中的 SRV.4.1,版本 2.5 中的 SRV.3.1)的“请求”一章中的“HTTP 协议参数”部分。
似乎没有一种干净的方法来按顺序获取名称(不按浏览器给出的顺序返回名称)。我想,我可以解析原始GET字符串或解析原始POST字符串,但我认为我将添加另一个隐藏参数,然后用于获取其顺序。getParameterNames()
getQueryString()
getInputStream()
getParameterValues(String)
如果你很好奇为什么我想要按顺序排列参数,那是因为我有控件,用户可以使用jQuery重新排列,我想知道用户选择的顺序:
<form>
<ul id=variables>
<li>
<input name=hello>hello
<input type=hidden name=variableOrder value=hello>
<li>
<input name=world>world
<input type=hidden name=variableOrder value=world>
</ul>
</form>
<script src="jquery.js"></script>
<script src="jquery-ui.js"></script>
<script>
jQuery('#variables').sortable().disableSelection();
</script>