我的JSP包含以下代码段:
<c:forEach items="${rulesForm.rules}" var="rule" varStatus="counter">
<tr id="rules${counter.index}" name="rules[${counter.index}]">
“规则”本身是List<Rule>
。
当我从我的Spring MVC控制器传回ModelAndView
对象时,我可以看到我的列表的顺序正确。
然而,当它在屏幕上呈现时,排序有些随机。我也有JavaScript在DOM上执行一些修改,但我没有看到这做任何重新排序。
因此,我想知道c:forEach
是否是罪魁祸首?
答案 0 :(得分:3)
我敢打赌<c:forEach/>
在大多数实现中使用Iterator
,因此它依赖于底层集合顺序。因此,如果您通过List
,则将保留,而Set
则不然。
虽然文档没有说明:
items [...]要迭代的项目集合。
考虑一下 - 如果没有保留有序集合的顺序,任何服务器端的结果排序都没有意义。
答案 1 :(得分:0)
迭代将取决于传递的List
的类型。因此,您必须查看该类型List
的文档。