从 Struts JSP 中的会话获取映射值
Fetch Map value from session inside Struts JSP
我有一个会话变量(它是一个 map
,在 JSP 中具有结构 Map<String,ArrayList<String>>)
。
当我在控制台中打印值时
<%System.out.println("Session Value "+session.getAttribute("PRODUCTTYPESTEMP"));%>
它正在控制台中打印整个值。
我想要的只是通过传递所需的 key
并使用 check box
打印它来获得 ArrayList
值。
我不知道该怎么做。
顺便说一句,我不熟悉 struts
或 JSP
。
非常感谢任何帮助。
供参考,下面是现有的一段代码(请忽略,如果它令人困惑,请提供实现上述功能的方法)- 如果 session
returns ArrayList
,我试图通过传递所需的 key
.
为 map
重写它
<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>
上面是打印所有带有复选框的值。
我只需要选择与 key
"Baskets"
关联的 ArrayList
值
编辑:
实施最新解决方案后,正在获取值但复选框不可用。我应该在屏幕截图和代码 'Unknown' 中对齐 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>
我有一个会话变量(它是一个 map
,在 JSP 中具有结构 Map<String,ArrayList<String>>)
。
当我在控制台中打印值时
<%System.out.println("Session Value "+session.getAttribute("PRODUCTTYPESTEMP"));%>
它正在控制台中打印整个值。
我想要的只是通过传递所需的 key
并使用 check box
打印它来获得 ArrayList
值。
我不知道该怎么做。
顺便说一句,我不熟悉 struts
或 JSP
。
非常感谢任何帮助。
供参考,下面是现有的一段代码(请忽略,如果它令人困惑,请提供实现上述功能的方法)- 如果 session
returns ArrayList
,我试图通过传递所需的 key
.
map
重写它
<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>
上面是打印所有带有复选框的值。
我只需要选择与 key
"Baskets"
ArrayList
值
编辑: 实施最新解决方案后,正在获取值但复选框不可用。我应该在屏幕截图和代码 'Unknown' 中对齐 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>