如何自定义JSF转换消息'必须是由一个或多个数字组成的数字'?

fre*_*dev 5 jsf message numbers converter jsf-2

我有一个映射到Long属性的输入文本.

private Long length;
Run Code Online (Sandbox Code Playgroud)

<h:inputText value="#{bean.length}" />
Run Code Online (Sandbox Code Playgroud)

当我在输入文本中输入非数字时,我收到以下转换错误:

myForm:myField:'someText'必须是由一个或多个数字组成的数字.

我想知道如何自定义此消息:

长度必须是大于零的数字.

Bal*_*usC 9

无论是使用输入组件的converterMessage属性:

<h:inputText converterMessage="length must be a number greater than zero" />
Run Code Online (Sandbox Code Playgroud)

(并且不要忘记使用<f:validateLongRange>以防止用户输入负值并提供validatorMessage!)

或者在类路径中创建一个属性文件,该文件将覆盖内置JSF的默认消息LongConverter:

javax.faces.converter.LongConverter.LONG = length must be a number greater than zero
Run Code Online (Sandbox Code Playgroud)

并已注册为消息包faces-config.xml:

<application>
    <message-bundle>com.example.CustomMessages</message-bundle>
</application>
Run Code Online (Sandbox Code Playgroud)

上面的示例假定文件名CustomMessages.properties已经放在com.example包中.您可以将其命名并放置在任何您想要的位置.

您可以在JSF规范的javax.faces.converter.LongConverter.LONG第2.5.2.4章中找到所有消息键的概述,以及它们的默认值,这也是本答案中的复制品.