java - 从 Struts JSP 中的会话中获取 Map 值
问题描述
我有一个会话变量(它是JSPmap
中的结构Map<String,ArrayList<String>>)
。当我在控制台中打印值时,就像在控制台
<%System.out.println("Session Value "+session.getAttribute("PRODUCTTYPESTEMP"));%>
中打印整个值一样。我想要的只是ArrayList
通过传递所需的值来获取值并将key
其打印出来与check box
。我不知道该怎么做。顺便说一句,我不熟悉struts
或JSP
。非常感谢任何帮助。
作为参考,下面是现有的一段代码(请忽略,如果它令人困惑,请提供一种实现上述功能的方法) - 如果session
返回,它将起作用ArrayList
,我试图map
通过传递来重写它 desired key
。
<input type="checkbox" id="warrantsCb2"/><span></span></label><label for="warrantsCb" style="font-size:12px"><b>Warrants</b></label>
<ul class="nested">
<li>
<label><input type="checkbox" /><span></span></label>Warrants
</li>
<% colCntr=0; %>
<s:iterator var="product_types" value="#session['PRODUCTTYPESTEMP']">
<li>
<label>
<input type="checkbox" id="productTypeCodesTemp" name="productTypeCodesTemp" value="<s:property value="#product_types_temp.value"/>"
<s:iterator var="productTypeTemp" value="#attr['productTypeCodesTemp']">
<s:if test="%{#attr['productType']==#product_types.value}"> checked="checked" </s:if>
</s:iterator>/>
<span></span></label>
<s:property value="#product_types.label"/>
</li>
</s:iterator>
</ul>
编辑 - 在 Madis R 的帮助下添加了新代码
<li class="caret">
<input type="checkbox" id="warrantsCb" checked="checked" /><label>
<input type="checkbox" id="warrantsCb2"/><span></span></label><label for="warrantsCb" style="font-size:12px"><b>Warrants</b></label>
<s:iterator value="#session['PRODUCTTYPESTEMP']">
<s:property value="Baskets"/>
<s:checkboxlist name="checkboxes" list="value"/>
</s:iterator>
</li>
以上是使用复选框打印所有值。我只需要选择ArrayList
与key
“篮子”相关的值
编辑:实施最新解决方案后,正在获取值,但复选框不可用。我应该在屏幕截图和代码中将Warrant与“Unknown”对齐
<td style="text-align:left;vertical-align:top;padding:0">
<div class="acidjs-css3-treeview">
<ul>
<li class="caret">
<input type="checkbox" id="warrantsCb" checked="checked" /><label>
<input type="checkbox" id="warrantsCb2"/><span></span></label><label for="warrantsCb" style="font-size:12px"><b>Warrants</b></label>
<s:checkboxlist name="checkboxes" list="#session['PRODUCTTYPESTEMP']['Baskets']"/>
</li>
</ul>
</div>
</td>
解决方案
我不完全确定我理解你,但在 struts 2 中,你可以通过SessionAware
在你的操作中实现接口或从 ActionContext 获取它来访问会话ActionContext.getContext().getSession()
。无需将java代码直接写入jsp
要从会话中获取数据,您可以在 jsp 中尝试:
<s:iterator value="#session['PRODUCTTYPESTEMP']['Baskets']"> // iterates over list with map key Baskets
<div>
<s:property/> // gets element from Baskets
</div>
</s:iterator>
编辑:试试这个,它从带有键篮的地图中获取列表并创建带有值的复选框:
<s:checkboxlist name="checkboxes" list="#session['PRODUCTTYPESTEMP']['Baskets']"/>
推荐阅读
- javascript - TypeORM 中的 FILTER 语句
- javascript - ASP.Net 验证器成功时如何调用 JavaScript 函数?
- python - python学习tkinter listbox catch no selection错误
- java - 服务器突然发送 Fin Push Ack
- java - 如何在带有 MangoDB 的 Spring Boot 中使用聚合和标准获取包含字段计数的数据列表
- css - Django #hashtags 在 url
- python - Python Regex:如何将找到的字符串拆分为列表元素?
- html - CSS - 如何在不堆叠的情况下制作两个“右上角”元素
- python - 如何在函数之间传递编辑的wav而不在两者之间保存wav?
- c# - Visual Studio 2017 - 从 .Net Framework 4.52 升级到 4.61 后无法更新服务引用