如何在Struts2中国际化集合的转换错误消息?

时间:2011-10-26 03:08:54

标签: internationalization struts2

已解决了针对单个字段的相关问题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<Item>; selitems的类型是List<SelItem>。 我希望selitmems []。quant属性是一个整数类型。如果最终用户为第一个项填写了类似“abc”的字符串,则默认错误消息为:

  

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

以上信息不是我想要的。在我的情况下,无论具体选择的项目如何,我都希望如下概括错误消息:

  

请输入项目的整数。

当然,如果错误消息可能因特定项目而异,那就太棒了:

  

请输入第一项的整数。

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

2 个答案:

答案 0 :(得分:0)

尝试使用“label”属性。你可以玩一些有趣的游戏,比如(未经测试,但很接近):

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

属性文件包含:

selitem.quantity=Item #{0}

您可以按照here所述更改转换错误消息,但这可能不是您想要做的。

(我已经知道完全删除转换拦截器并让默认转换器或自定义转换器处理转换错误,当错误转换也无法通过字段的“真实”验证。)

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

答案 1 :(得分:0)

在属性文件中放入类似的内容。

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

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