JSF Converter的错误消息中的自定义变量

Ste*_*eve 12 validation jsf converter

我有一个表单页面,其中包含一个接受日期的inputText字段.我们有一个转换器将字符串从文本框转换为Date对象(即"2011-03-01"到java.util.Date("2011-03-01""))

如果字符串不是日期,如"123",则会显示验证错误消息,如"value(123)必须是日期".

目前,在我的.properties文件中,我看到:

javax.faces.converter.DateTimeConverter.DATE = value({0})必须是日期

我需要通过准确指定哪个字段必须是日期来使此错误消息更加清晰.(因为表单上可能有多个日期文本字段).

我想将其更改为:

javax.faces.converter.DateTimeConverter.DATE =值为{1}的字段"{0}"必须是日期

但是,我不确定JSF如何自动填写{0}和{1}.如何在JSF Converter错误消息中指定自己的变量?

注意:我添加了尝试创建自己的验证器(不要与转换器混淆)但似乎JSF框架在其生命周期中的验证之前进行转换.

Bal*_*usC 20

从JSF 1.2开始,使用该converterMessage属性替换整个消息,例如:

<h:inputText value="#{user.dateOfBirth}" converterMessage="Format must be: yyyy-MM-dd">
    <f:convertDateTime pattern="yyyy-MM-dd" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)

否则,JSF默认显示_detail消息<h:message>.只有当您使用时,<h:message showDetail="false" showSummary="true">才会显示与您的问题类似的那个.我不知道你使用的是什么版本的JSF,但在我的JSF 2.0.3的默认详细消息f:convertDateTime如下:

javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1}
Run Code Online (Sandbox Code Playgroud)

{2}将与客户ID或被取代label的输入字段时存在的属性.

<h:inputText value="#{user.dateOfBirth}" label="Date of birth">
    <f:convertDateTime pattern="yyyy-MM-dd" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)

无论是DATEDATE_detail必须被定义的消息的DATE_detail要使用的信息:

javax.faces.converter.DateTimeConverter.DATE=Date format must be: dd/mm/yyyy 
javax.faces.converter.DateTimeConverter.DATE_detail=Date format must be: dd/mm/yyyy
Run Code Online (Sandbox Code Playgroud)

也可以看看: