【问题标题】:struts 2 text tag with dynamic expression , how?struts 2 带有动态表达式的文本标签,怎么样?
【发布时间】:2010-01-05 22:03:49
【问题描述】:

我需要动态地提供从动作到文本标签的键

<s:text name="<%=talkToUsInfo.messageKey%>" />  

但是 text 标签上的 name 属性被声明为 false (不知道为什么?)

如何在不更改 jar 文件中的 tld 的情况下获得类似的工作?

【问题讨论】:

    标签: struts2


    【解决方案1】:

    看看 OGNL

    它可能看起来像这样

    <s:text name="%{talkToUsInfo.messageKey}" />
    

    【讨论】:

    • 链接到OGNL 会很有用
    【解决方案2】:

    Struts documentation 说:

    相反,您应该使用在 Action 扩展 XWork 的 ActionSupport 时继承的 getText() 方法:

    <s:textfield name="lastName" label="getText('person.lastName')" />
    

    所以我用了例如

    <s:property value="getText('status' + #someObject.currentStatus)" />
    

    而不是“s:text”,它起作用了。

    【讨论】:

    • 这并没有解决手头的问题。问题是如何动态创建您的 i18n 密钥
    【解决方案3】:

    我更喜欢使用OGNLs: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')" />
    

    【讨论】:

      猜你喜欢
      • 2018-05-07
      • 2013-09-29
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 2013-05-13
      • 2014-05-10
      • 1970-01-01
      相关资源
      最近更新 更多