从 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 值。 我不知道该怎么做。 顺便说一句,我不熟悉 strutsJSP。 非常感谢任何帮助。

供参考,下面是现有的一段代码(请忽略,如果它令人困惑,请提供实现上述功能的方法)- 如果 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>