我有一个表单页面,其中包含一个接受日期的inputText字段。我们有一个转换器将字符串从文本框转换为Date对象(即“2011-03-01”到java.util.Date(“2011-03-01”“))
如果字符串不是日期,例如“123”,则会显示验证错误消息,例如“value(123)必须是日期”。
目前,在我的.properties文件中,我看到了:
javax.faces.converter.DateTimeConverter.DATE =值 ({0})必须是日期
我需要通过准确指定哪个字段必须是日期来使此错误消息更加清晰。 (因为表单上可能有多个日期文本字段)。
我想将其更改为:
javax.faces.converter.DateTimeConverter.DATE =该 值为{{1}的字段“{0}”必须为a 日期
但是,我不确定JSF如何自动填写{0}和{1}。如何在JSF Converter错误消息中指定我自己的变量?
注意:我添加了尝试创建自己的验证器(不要与转换器混淆)但似乎JSF框架在其生命周期中的验证之前进行转换。
答案 0 :(得分: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>
否则,JSF默认显示_detail
中的<h:message>
消息。只有当您使用<h:message showDetail="false" showSummary="true">
时,才会显示与问题类似的问题。我不确定您使用的JSF版本,但在我的JSF 2.0.3中,f:convertDateTime
的{{3}}如下:
javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1}
{2}
将替换为客户端ID或输入字段的label
属性。
<h:inputText value="#{user.dateOfBirth}" label="Date of birth">
<f:convertDateTime pattern="yyyy-MM-dd" />
</h:inputText>
必须为要使用的DATE
消息定义DATE_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
另见: