2

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}"呢?那些尾随花括号是什么意思?

4

3 回答 3

5

这是一个OGNL 列表投影,用于从 中获取所有id值作为列表petDao.pets,这意味着其中的所有值都<s:select>将被预先选择。

于 2013-01-29T10:28:27.430 回答
1

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

它可以与它一起使用,但不是必需的,它将无法通过 IDE 验证(如果 IDE 支持 S2 和/或 OGNL,例如 IntelliJ),并且我已经做了更新说明。

于 2013-01-28T15:50:07.397 回答
0

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

例如,

<s:property value="name" />

将在值堆栈中查找名称属性,即通过调用 getName() 检索到的值。

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

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

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

于 2013-01-28T15:43:47.640 回答