我有一个表单页面,其中有一个接受日期的 inputText 字段。我们有一个转换器,可以将文本框中的字符串转换为 Date 对象(即 "2011-03-01" 到 java.util.Date("2011-03-01"") )
如果字符串不是日期,例如“123”,则将显示验证错误消息,例如“值(123)必须是日期”。
目前,在我的 .properties 文件中,我看到:
javax.faces.converter.DateTimeConverter.DATE=值
({0}) 必须是日期
我需要通过准确指定哪个字段必须是日期来使此错误消息更清晰。 (因为表单上可能有多个日期文本字段)。
我想把它改成这样:
javax.faces.converter.DateTimeConverter.DATE=
值为 ({1}) 的字段“{0}”必须是
日期
但是,我不确定 JSF 如何自动填充 {0} 和 {1}。如何在 JSF Converter 错误消息中指定我自己的变量?
Note:我已添加尝试创建自己的验证器(不要与转换器混淆),但 JSF 框架似乎在其生命周期中的验证之前进行转换。
从 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 中默认详细信息 https://stackoverflow.com/a/3092896/59087 for f:convertDateTime
如下:
javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1}
The {2}
将替换为客户端 ID 或label
输入字段的属性(如果存在)。
<h:inputText value="#{user.dateOfBirth}" label="Date of birth">
<f:convertDateTime pattern="yyyy-MM-dd" />
</h:inputText>
这俩DATE
and 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
也可以看看:
- JSF 2.0 教程 - 微调验证 http://balusc.blogspot.com/2011/01/jsf-20-tutorial-with-eclipse-and.html#FinetuningValidation
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)