【发布时间】:2010-01-05 22:03:49
【问题描述】:
我需要动态地提供从动作到文本标签的键
<s:text name="<%=talkToUsInfo.messageKey%>" />
但是 text 标签上的 name 属性被声明为 false (不知道为什么?)
如何在不更改 jar 文件中的 tld 的情况下获得类似的工作?
【问题讨论】:
标签: struts2
我需要动态地提供从动作到文本标签的键
<s:text name="<%=talkToUsInfo.messageKey%>" />
但是 text 标签上的 name 属性被声明为 false (不知道为什么?)
如何在不更改 jar 文件中的 tld 的情况下获得类似的工作?
【问题讨论】:
标签: struts2
看看 OGNL
它可能看起来像这样
<s:text name="%{talkToUsInfo.messageKey}" />
【讨论】:
相反,您应该使用在 Action 扩展 XWork 的 ActionSupport 时继承的 getText() 方法:
<s:textfield name="lastName" label="getText('person.lastName')" />
所以我用了例如
<s:property value="getText('status' + #someObject.currentStatus)" />
而不是“s:text”,它起作用了。
【讨论】:
我更喜欢使用OGNL 和s:text,而不是手动调用getText。
您通常会在添加动态部分时定义一个固定前缀,因此可以使用类似这样的东西:
<s:text name="%{'student.types.'+currencyType}" />
我在s:property 中使用getText 的唯一一次是这样的(如果你想使用s:text,则需要一些if/else):
<s:property value="shouldCancelIt.equals(\"0\") ?
getText('label.yes'):getText('label.no')" />
【讨论】: