【问题标题】:JSF Message: un-localize?JSF 消息:取消本地化?
【发布时间】:2010-11-16 16:07:26
【问题描述】:

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

我希望一个特定的字段是 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 中的语言环境有关。

起初我虽然是创建一个自定义验证器的基本解决方案,它会检查提交的值是否为字符串以及是否在要求的范围内,但在我看来有点矫枉过正。

还有其他方法吗?

【问题讨论】:

    标签: java validation jsf localization


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答 (+1)。我必须对所有具有数字范围的 inputTexts 执行此操作,所以我对此不太感兴趣。无论如何,如果没有更好的结果,我会将其标记为已接受的答案。
    • 在这种情况下,您还可以覆盖捆绑包中的默认消息键“javax.faces.validator.NOT_IN_RANGE”!
    【解决方案2】:

    您希望验证消息以哪种语言显示?

    最近一位同事不得不解决(我认为)您的问题:我们是意大利人,加载了意大利包和意大利语言环境,但所有 JSF 验证消息(不是自定义的,其语言环境已正确设置和检索)都是用英语。 在查看 JSF jar 文件后,他发现从中检索此验证消息的属性文件简直是……在意大利语中不可用! 他必须寻找一个已经(错误)翻译的属性文件并将其包含在 JSF jar 文件中。

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

    【讨论】:

    • 谢谢 (+1),我的问题是另一个问题。
    • 对不起,我没有正确理解。 chkal 的解决方案有效吗?
    猜你喜欢
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多