struts2 s:select value ognl expression



在我见过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

最新更新