【问题标题】:How to internationalize a collection's conversion error message in Struts2?如何在 Struts2 中国际化集合的转换错误消息?
【发布时间】:2011-10-26 03:08:54
【问题描述】:

一个特定于单个字段的相关问题已解决here。但是如何自定义一个集合字段的转换错误信息呢?

这是一个例子: 在一个 jsp 页面上,我有一个 Collection 类型的字段:

...
<s:iterator value="items" status="m">
<s:hidden name="selitmems[%{#m.index}].id" value="%{id}"/>
<s:textfield name="selitmems[%{#m.index}].quant" size="10"/>
</s:iterator>

物品的类型是:List&lt;Item&gt;; selitems 的类型是List&lt;SelItem&gt;。 我希望 selitmems[].quant 属性是整数类型。如果最终用户为第一项填写了“abc”之类的字符串,则默认错误消息为:

字段“selitmems[0].quant”的字段值无效。

上面的消息不是我想要的。就我而言,我更愿意将错误消息概括如下,而不考虑特定的选定项:

请为项目输入整数。

当然,如果错误信息可以根据具体项目而有所不同,那就太好了:

请为第一项输入一个整数。

我尝试在属性文件中添加一些键,例如“selitmems[0].quant”或“selitmems”,但无法获得结果。当我仍然可以重用内置的类型转换函数时,有没有办法为struts2中的集合字段自定义错误消息?

【问题讨论】:

    标签: internationalization struts2


    【解决方案1】:

    尝试使用“标签”属性。你可以用它玩一些……有趣的游戏,例如(未经测试,但接近):

    label="%{getText('selitem.quantity', { #m.index })}"
    

    属性文件将包含:

    selitem.quantity=Item #{0}
    

    您可以按照here 的说明更改转换错误消息,尽管这可能不是您想要做的。

    (众所周知,我会完全删除转换拦截器,让默认转换器或自定义转换器在错误的转换也未能通过字段的“真实”验证时处理转换错误。)

    嗯嗯...你可以用 OGNL 和替代来玩一些疯狂的游戏。

    【讨论】:

      【解决方案2】:

      在你的属性文件中加入类似的东西。

      invalid.fieldvalue.selitmems.quant = Please input integers for the items.
      

      然后selitmems[0].quantselitmems[1].quantselitmems[2].quant 转换错误都返回相同的消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 2015-07-18
        相关资源
        最近更新 更多