从Struts JSP中的会话中获取Map值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Struts JSP中的会话中获取Map值相关的知识,希望对你有一定的参考价值。
我有一个会话变量(它是一个map
,结构为Map<String,ArrayList<String>>)
在JSP中。当我在控制台中打印像<%System.out.println("Session Value "+session.getAttribute("PRODUCTTYPESTEMP"));%>
这样的值时,它会在控制台中打印整个值。我想要的是通过传递所需的ArrayList
值key
并用check box
打印。我不知道该怎么做.BTW我不熟悉struts
或JSP
。非常感谢任何帮助。
供参考,下面是现有的一段代码(请忽略,如果它令人困惑,请提供一种方法来实现上述功能) - 如果session
返回ArrayList
,我将尝试通过传递所需的map
重写它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
“Baskets”相关的key
值
编辑:实施最新解决方案后,正在获取值但复选框不可用。我应该像屏幕截图中的“未知”和代码一样对齐Warrant
<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']"/>
我正在粘贴确切的代码,这符合我的要求,希望这将有助于一些可怜的灵魂。这是基于Madis R提供的解决方案
<ul class="nested">
<s:iterator value="#session['PRODUCTTYPESTEMP']['Certificates']">
<%--Certificates is the key we are passing into the map--%>
<li>
<label><input type="checkbox" /><span></span></label><s:property/>
</li>
</s:iterator>
</ul>
以上是关于从Struts JSP中的会话中获取Map值的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map(代码片