我的 JSP 包含以下代码片段:
<c:forEach items="${rulesForm.rules}" var="rule" varStatus="counter">
<tr id="rules${counter.index}" name="rules[${counter.index}]">
“规则”本身就是一个List<Rule>
.
当我通过我的ModelAndView
时从我的 Spring MVC Controller 返回对象,我可以看到我的列表的顺序是正确的。
但是,当它在屏幕上呈现时,顺序有些随机。我还有 JavaScript 对 DOM 执行一些修改,但我没有看到它执行任何重新排序。
因此,我想知道是否 c:forEach
罪魁祸首是什么?
最佳答案
我打赌 <c:forEach/>
使用Iterator
在大多数实现中,因此它依赖于底层收集顺序。因此,如果您通过 List
,顺序将被保留,但 Set
则不然。 s。
虽然文档没有说明:
items [...] Collection of items to iterate over.
想一想 - 如果不保留有序集合的顺序,任何服务器端结果排序都没有意义。
关于java - JSTL:c:forEach 是否保证 JSP 中的列表排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8839668/