2010-11-16 54 views
1

我有一个简单的表格,每个<h:inputText>旁边都有一个<h:message>来显示验证消息。JSF消息:un-localize?

我想要一个特定的字段是1到999999之间的数字,并且这是验证消息,如果该数字不在正确的范围内显示。使用此:

<f:validateLongRange minimum="1" maximum="999999"/> 

我得到的消息:

productId: Validation Error: Specified attribute is not between 
the expected values of 1 and 999,999. 

我显示没有逗号分隔符的号码的请求,但这种附带了一个我在我的faces.config的语言环境。

起初,我通过创建custon验证器的基本解决方案,它将检查提交的值是否是字符串,是否在要求的范围内,但在我看来有点矫枉过正。

有没有另一种方法呢?

回答

2

如果使用JSF 1.2,你可以设置你的输入组件替代验证消息:

<h:inputText value=".." validatorMessage="Please enter a valid number"> 
    <f:validateLongRange minimum="1" maximum="999999"/> 
</h:inputText> 
+0

感谢您的回答(+1)。我必须为所有具有数字范围的输入文本执行此操作,所以我对此并不热衷。无论如何,如果没有更好的答案,我会将它标记为已接受的答案。 – 2010-11-17 08:33:15

+1

在这种情况下,您也可以覆盖包中的默认消息密钥“javax.faces.validator.NOT_IN_RANGE”! – chkal 2010-11-17 19:16:08

1

在哪种语言,你要出现在您的验证消息?

最近一个同事不得不解决什么(我认为)是你的问题:我们是意大利人,意大利语包和意大利语区域加载的,但是所有的JSF验证消息(不是自定义的,区域设置正确设置和检索的)是英文的。 在查看JSF jar文件后,他发现从中检索到此验证消息的属性文件简直就是......在意大利语中不可用! 他不得不寻找一个已经(坏)已翻译的属性文件,并将其包含在JSF jar文件中。

希望它也解决了你的问题。

+0

谢谢(+1),我的问题是一个不同的问题。 – 2010-11-18 00:02:25

+0

对不起,我没正确理解。 chkal的解决方案工作? – emas 2010-11-18 10:59:59