我有一个包含列表作为其值的地图。我可以通过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没有填充。
答案 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。