【问题标题】:Change Struts 2, i18n classes behavior when key is not found未找到键时更改 Struts 2、i18n 类的行为
【发布时间】:2015-07-08 21:35:28
【问题描述】:

我们在操作中使用getText,在验证器中使用setMessageKey,在 i18n 应用程序的 jsp 文件中使用<s:text>

当 Struts 2 在资源包中找不到键时,它会返回键本身。例如form.transfer.confirm

我们如何改变这种行为,而不是键本身 Struts2 返回空字符串。

【问题讨论】:

    标签: struts2 internationalization jsp-tags


    【解决方案1】:

    您需要创建TextProvider 的自定义实现并覆盖其中的getText 方法。

    1) 创建类(例如EmptyDefaultTextProvider)扩展TextProvider 现有实现之一(例如TextProviderSupport)。

    2) 像这样覆盖所有getText 方法:

    public String getText(String key, String defaultValue) {
         return super.getText(key, "");
    }
    

    3) 使用您的自定义类作为默认文本提供程序。放在struts.xml下面。

    <constant name="struts.xworkTextProvider" value="emptyDefaultTextProvider" />
    
    <bean type="com.opensymphony.xwork2.TextProvider" name="emptyDefaultTextProvider" 
                                  class="packagepath.EmptyDefaultTextProvider" scope="default" />
    

    【讨论】:

    • 似乎覆盖getText(String key, String defaultValue, List&lt;?&gt; args) 将确保所有调用都被覆盖。
    • @AlirezaFattahi 至少还有getText(String key, String defaultValue, String[] args) 和一对getText(String key, String defaultValue, List&lt;?&gt; args, ValueStack stack)
    • 如果您不使用 struts 2 的 ActionSupport 进行操作,则上述方法仅在您注入 Container 然后使用它注入 TextProviderFactory 时才有效。有关示例,请参见 ActionSupport 的来源。
    猜你喜欢
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    相关资源
    最近更新 更多