首页 > 解决方案 > 从 Struts JSP 中的会话中获取 Map 值

问题描述

我有一个会话变量(它是JSPmap中的结构Map<String,ArrayList<String>>)。当我在控制台中打印值时,就像在控制台 <%System.out.println("Session Value "+session.getAttribute("PRODUCTTYPESTEMP"));%>中打印整个值一样。我想要的只是ArrayList通过传递所需的值来获取值并将key其打印出来与check box。我不知道该怎么做。顺便说一句,我不熟悉strutsJSP。非常感谢任何帮助。

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

以上是使用复选框打印所有值。我只需要选择ArrayListkey“篮子”相关的值

编辑:实施最新解决方案后,正在获取值,但复选框不可用。我应该在屏幕截图和代码中将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>

在此处输入图像描述

标签: javajspstruts2

解决方案


我不完全确定我理解你,但在 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']"/>


推荐阅读