用JSTL的输出LinkedHashMap的内容,顺序为何是打乱的?

OctopusThu 2008-12-18 09:19:13
首先用Spring的JdbcTemplate从表(视图)中读出数据(返回一个java.util.List),然后把数据装进一个LinkedHashMap,最后在JSP页面中通过<c:forEach>输出。可是现在的问题是:有的时候<c:forEach>的输出顺序与表(视图)的默认顺序不符(有的时候是相符的)。代码片段如下:


LinkedHashMap kvMap = new LinkedHashMap();
jt = new JdbcTemplate(dataSource);
sql = "select " + column + " from " + table;
List list = jt.queryForList(sql);
if (list.size() > 0) {
for (Iterator it = list.iterator(); it.hasNext();) {
ListOrderedMap entity = (ListOrderedMap) it.next();
kvMap.put((String) entity.getValue(0), (String) entity.getValue(1));
}


把kvMap传递给JSP的PageContext,然后在页面取出:


<select name ="xxx">
<c:forEach var="map" items="${kvMap}">
<option value=<c:out value = "${kvMap.key}" /> > <c:out value = "${kvMap.value}" /> </option>
</c:forEach>
</select>


最后,select框中的选项顺序与表(视图)中的顺序不符。不知道问题出在了什么地方?
...全文
549 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
ListOrderedMap entity = (ListOrderedMap) it.next();
System.out.println(entity.getValue(0) + " --> " + entity.getValue(1));
kvMap.put((String) entity.getValue(0), (String) entity.getValue(1));

你加一句红色的那个代码,再与 c:forEach 遍历出来的对比一下就能看出顺序是否是一致的了。

如果是一致的,那问题就不在这里了。
OctopusThu 2008-12-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bao110908 的回复:]
LinkedHashMap 是有序的散列 Map,迭代的顺序与 put 时的顺序是一致的,不会出现你所说的那种情况,
你可以在 put 那句之前将从 Entity 中取出的 key 输出一下,与用 c:forEach 的顺序是一致的。
[/Quote]

那问题到底出在哪儿了呢...
  • 打赏
  • 举报
回复
LinkedHashMap 是有序的散列 Map,迭代的顺序与 put 时的顺序是一致的,不会出现你所说的那种情况,
你可以在 put 那句之前将从 Entity 中取出的 key 输出一下,与用 c:forEach 的顺序是一致的。
lanzhengwu 2008-12-18
  • 打赏
  • 举报
回复
你 SQL语句中order啊 。。普通LIST输出就好了。。
OctopusThu 2008-12-18
  • 打赏
  • 举报
回复
回复2楼:是笔误,呵呵。

回复1楼:没太明白你的意思。LinkedHashMap应该是保持元素顺序的啊。
  • 打赏
  • 举报
回复
你是不是写错了啊?

c:out 里应该写 map.key,而不是 kvMap.key 吧?
bruni 2008-12-18
  • 打赏
  • 举报
回复
因为它是map, 使用iterate来循环的.
你用List就不会有顺序问题了.
内容概要:本文系统研究了虚拟同步发电机(VSG)的惯量-阻尼协同自适应并网控制策略及其稳定性分析,聚焦于提升高比例可再生能源接入背景下电网的频率稳定性。通过Simulink仿真平台与Matlab代码实现,构建了VSG并网系统的动态模型,深入探讨了惯量与阻尼参数的自适应调节机制,以优化系统对频率波动的响应能力。研究涵盖了双机并联VSG的功率精确分配、微电网黑启动过程、虚拟阻抗的引入以及预同步控制等关键技术,并结合根轨迹分析与调节系数对比,验证了所提控制策略在提升系统稳定性和动态性能方面的有效性。文章强调了协同自适应控制在现代电力系统中的关键作用,为微电网和分布式能源系统的稳定运行提供了理论支持和技术方案。; 适合人群:具备电力系统、自动控制或新能源并网等相关专业知识背景,熟悉Matlab/Simulink仿真工具,从事电力电子、微电网控制、可再生能源并网等领域科研或工程应用的研发人员及研究生。; 使用场景及目标:①掌握VSG在微电网及并网系统中的高精度建模与仿真方法;②深入理解惯量-阻尼协同自适应控制对电网频率稳定的优化机制;③应用于微电网黑启动、功率均分控制、虚拟阻抗设计及预同步等实际工程场景的算法开发与性能验证; 阅读建议:建议结合提供的Matlab代码与Simulink模型进行同步仿真操作,重点关注参数自适应调节模块的设计逻辑、根轨迹稳定性分析及不同调节系数下的动态响应对比,以深化对控制策略内在机理的理解与实际应用能力。

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧