本地化的 JSF 默认验证器

发布于 2024-10-13 13:44:31 字数 547 浏览 2 评论 0原文

有什么方法可以轻松本地化 JSF 2.0 中的默认验证器消息吗?我知道关键是“javax.faces.component.UIInput.REQUIRED”,但从我发现的所有内容来看,更改它们的唯一方法是在消息包中,并且它不像资源那样具有区域设置感知能力邦德群岛我也没有找到任何方法来覆盖默认验证器

required="true"

,因此,有没有一种方法可以正确本地化这些消息,而无需编写使用所需资源包的自定义“必需”验证器?并不是说它的工作量太大,但我真的很喜欢

required="true"

而不是仅仅

<h:inputText ...
    <f:validator  ...
</h:inputText ...

为了代码简短等...这个问题是一般性的,尽管关于默认消息,但作为示例提到了所需的验证器。

JSF 2.0、GFv3.1、JEE6(Servlet 3.0、EL 2.2、EJB 3.1 等,如果这对任何人都重要的话)。

Is there any way to painlessly localize the default validator messages in JSF 2.0? I know the key is, i. e., "javax.faces.component.UIInput.REQUIRED", but from all I've found, the only way to change them is in a message-bundle, and it is not locale aware like resource-bundle is. I also didn't find any way to override the default validator for

required="true"

so, is there a way to decently localize those messages without writing a customized "required" validator that uses the needed resource-bundle? Not that it's too much work, but I really like the

required="true"

instead of

<h:inputText ...
    <f:validator  ...
</h:inputText ...

merely for code shortness etc... The question is general, about default messages though, the required validator is mentioned as an example.

JSF 2.0, GFv3.1, JEE6 (Servlets 3.0, EL 2.2, EJB 3.1, etc if that matters to anyone).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

叹沉浮 2024-10-20 13:44:31

您如何断定他们不了解区域设置?它绝对是区域设置感知的。只需提供您自己的本地化消息副本,其中包含 第 2.5.2.4 章中定义的密钥JSF 2.0 规范,并在 faces-config.xml 中指定这些消息资源的基本名称。它们由 ResourceBundle 加载,您可以遵循 name_ll_CC.properties 相同的捆绑文件命名约定,其中 ll 是语言代码,CC 是(可选)国家/地区代码。

顺便说一下,我刚刚再次检查了一下, Mojarra 2.0.3 附带了英文的内置消息包(默认)、德语、西班牙语、法语、日语、韩语、葡萄牙语(巴西)、中文和台湾语。您使用的是哪种语言,无法使用内置消息包之一?

How did you conclude that they are not locale aware? It's definitely locale aware. Just provide your own copies of localized messages with keys as definied in chapter 2.5.2.4 of the JSF 2.0 specification and specify the base name of those message resources in <message-bundle> in faces-config.xml. They're loaded by ResourceBundle, you could just adhere the same bundle file naming convention of name_ll_CC.properties where ll is the language code and CC is the (optional) country code.

By the way, I just checked it once again, Mojarra 2.0.3 ships with builtin message bundles in English (default), German, Spanish, French, Japanese, Korean, Portuguese (Brazilian), Chinese and Taiwanese. What language are you using that you can't use one of the builtin message bundles?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文