我无法使我的freemarker struts2 select tag显示对象相关列表的默认值。
在我的行动中,我有:
private List<CodeLabel> modifRoomTypeOpt;
里面我有对象CodeLabel,其值如S:Single,D:Double,...
<@s.select id="123123"
name="roomModif[2].type"
value="${modifiedRoom.type}"
list="modifRoomTypeOpt" listKey="code" listValue="label"/>
在生成的html中,我可以看到值为S,D,T,...的标签,以及标签Single,Double,...所以迭代完成了我的CodeLabel对象。但在我的选择中,第一个选项总是被预选。我检查了$ {modifiedRoom.type}及其'D'的值。 为什么没有预先选择值为D的选项?
答案 0 :(得分:1)
有趣的,
我做了一些调查和代码调试,发现 value 属性被评估为OGNL变量。这意味着Struts2在堆栈中查找与您在 value 属性中放置的字符串匹配的变量。
在内部,评估结果将作为 nameValue 放入属性列表中。
因此,我惊奇地发现使用属性 nameValue 而不是 value 是一个很好的解决方法,可以使用给定值预先选择一个select元素。
在你的情况下:
<@s.select id="123123"
name="roomModif[2].type"
nameValue="${modifiedRoom.type}"
list="modifRoomTypeOpt" listKey="code" listValue="label"/>
或者:
<@s.select id="123123"
name="roomModif[2].type"
nameValue=modifiedRoom.type
list="modifRoomTypeOpt" listKey="code" listValue="label"/>
答案 1 :(得分:0)
要设置默认值,您需要设置select标记的value属性,例如:
<@s.select id="123123"
name="roomModif[2].type"
value="${modifiedRoom.type}"
list="modifRoomTypeOpt" listKey="code" listValue="label"
value="modifRoomTypeOpt.get(1)" />
代码尚未经过测试,但我相信它应该可行。 供参考使用http://struts.apache.org/2.0.12/docs/select.html
如果要在select元素上设置默认标头,请使用headerKey和headerValue属性。