struts2 s:选择值ognl表达式

时间:2013-01-28 15:31:18

标签: struts2 ognl

在Struts2的s:select标签教程中,我见过:

<s:select label="Pets"
       name="petIds"
       list="petDao.pets"
       listKey="id"
       listValue="name"
       multiple="true"
       size="3"
       required="true"
       value="%{petDao.pets.{id}}"
/>                          ^  ^

和我的问题:为什么value="%{petDao.pets.{id}}"?为什么不简单value="%{petDao.pets.id}"?那些尾随花括号的意思是什么?

3 个答案:

答案 0 :(得分:5)

这是一个OGNL list projection,可以将所有id值作为petDao.pets的列表获取,这意味着此<s:select>中的所有值都将被预先选中。

答案 1 :(得分:1)

没有必要;我怀疑这是标签源文件中出错的结果。

它可以使用它,但是不需要,IDE验证失败(如果IDE支持S2和/或OGNL,例如,IntelliJ),我已做了更新的注释。

答案 2 :(得分:0)

主要原因是因为%{}语法用于强制OGNL评估,否则Struts会将该值视为字符串文字。

例如,

<s:property value="name" />

将在值栈中查找name属性,即通过调用getName()来检索值。

如果您想强制它使用文字值“name”,则需要使用%{}语法 -

<s:property value="%{'name'}" />

来源: http://www.coderanch.com/t/420711/Struts/Struts