我在JSP中有一个会话变量(它是一个map
结构为Map<String,ArrayList<String>>)
的会话变量。
当我在控制台中打印值时
<%System.out.println("Session Value "+session.getAttribute("PRODUCTTYPESTEMP"));%>
将在控制台中打印整个值。
我只想通过传递所需的ArrayList
来获得key
值,并用check box
打印出来。
我不确定该怎么做。
顺便说一句,我对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
“购物篮”相关的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>
答案 0 :(得分:1)
我不确定我是否完全了解您,但是在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']"/>
答案 1 :(得分:0)
我正在粘贴确切的代码,这符合我的要求, 希望这会帮助一些可怜的人。 这是基于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>