在我见过s:select
标签的 Struts2 教程中:
<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}"
? 那些尾随的大括号是什么意思?
OGNL 列表投影,用于从 petDao.pets
获取所有id
值作为列表,这意味着此<s:select>
中的所有值都将被预先选择。
没有必要;我怀疑这是标签源文件中错误的结果。
它适用于它,但不是必需的,将无法通过 IDE 验证(如果 IDE 支持 S2 和/或 OGNL,例如 IntelliJ),并且我已经记下了更新。
主要原因是因为 %{} 语法用于强制 OGNL 计算,否则 Struts 会将值视为字符串文本。
例如
<s:property value="name" />
将在值堆栈中查找名称属性,即是通过调用 getName() 检索的值。
如果要强制它使用文字值"name",则需要使用 %{} 语法 -
<s:property value="%{'name'}" />
源:http://www.coderanch.com/t/420711/Struts/Struts