如何从struts2中的地图中获取单个值

时间:2014-11-17 10:05:08

标签: java html jsp struts2

我有一个包含列表作为其值的地图。我可以通过jsp页面中的选项框填充值列表。但是当我尝试从列表中打印单个值时,它没有显示任何东西。

List<UOM> uomList=objectiveDelegate.getUOMList();

System.out.println("------->>"+uomList.size());

for(UOM temp:uomList){

    System.out.println("tepmp result is"+temp.getId());
}
dataArr.put("uomList", uomList);
return SUCCESS;

这个dataArr是一个包含一个键和一个列表作为值的地图。所以当我在做什么时

<div class="form-control div-pad">
    <div class="divhalf1">UOM</div>
    <div class="divhalf2">
        <s:select name="uom.name" id="uom_name" requiredLabel="true" 
                  list="%{dataArr['uomList']}" listValue="name" 
                  headerValue="Select UOM ">
        </s:select>
</div>

列表正在填充,但是当我在做

<div class="form-control div-pad">
    <div class="divhalf1" >UOM ID </div>
    <div class="divhalf2" >
        <s:textfield name="uom.id" id="id" ></s:textfield
    </div>                             
</div>

id没有填充。

1 个答案:

答案 0 :(得分:0)

在文本字段中,name属性用于从源Action读取值(未指定value属性)并将值设置为目标Action。

在选择中,它仅用于将值设置为目标操作,因为源来自list属性:

<s:select name="uom.name" 
          list="%{dataArr['uomList']}" 
     listValue="name" 
   headerValue="Select UOM ">

(请注意,您缺少listKey属性)

然后在这里

<s:textfield name="uom.id" />

你什么也没找到,因为从uom对象中读取,在源Action中并不存在。你也需要一个迭代器,可能:

<s:iterator value="%{dataArr['uomList']}" var="current">
    <s:textfield name="uom.id" value="current.uom.id" />
</s:iterator>

但请记住,不要过多地嵌套列表和地图,use objects instead