【问题标题】:JSTL: Does c:forEach guarantee List ordering in JSP?JSTL:c:forEach 是否保证 JSP 中的 List 排序?
【发布时间】:2012-02-09 00:18:35
【问题描述】:

我的 JSP 包含以下 sn-p:

<c:forEach items="${rulesForm.rules}" var="rule" varStatus="counter">
        <tr id="rules${counter.index}" name="rules[${counter.index}]">

“规则”本身就是一个List&lt;Rule&gt;

当我从 Spring MVC 控制器传回 ModelAndView 对象时,我可以看到我的 List 的顺序正确。

但是,当它在屏幕上呈现时,排序有点随机。我也有对 DOM 执行一些修改的 JavaScript,但我没有看到它进行任何重新排序。 因此,我想知道c:forEach是不是罪魁祸首?

【问题讨论】:

    标签: java jsp foreach jstl


    【解决方案1】:

    我打赌&lt;c:forEach/&gt; 在大多数实现中使用Iterator,因此它依赖于底层收集顺序。因此,如果您传递List,则顺序保留,而Sets 则不是这样。

    虽然文档没有说明:

    items [...] 要迭代的项目集合。

    想一想 - 如果没有保留有序集合的顺序,那么任何服务器端的结果排序都没有意义。

    【讨论】:

    • “看起来像一个 JS 和 DOM 问题”这个问题有什么解决方案吗?我有点遇到同样的头痛
    【解决方案2】:

    迭代将取决于传递的List 的类型。因此,您必须查看 List 类型的文档。

    【讨论】:

    • 是否有不保留顺序的列表?来自 Javadoc:“一个 有序 集合(也称为序列)
    猜你喜欢
    • 1970-01-01
    • 2010-11-05
    • 2014-09-29
    • 2020-05-27
    • 2016-01-12
    • 2015-06-25
    • 1970-01-01
    • 2014-12-06
    相关资源
    最近更新 更多