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

标签 validation jsf converters

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

如果字符串不是日期,例如“123”,则会显示验证错误消息,例如“值 (123) 必须是日期”。

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

javax.faces.converter.DateTimeConverter.DATE=value ({0}) must be a date

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

我想将其更改为:

javax.faces.converter.DateTimeConverter.DATE=The field "{0}" with value ({1}) must be a date

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

注意:我已添加尝试创建自己的验证器(不要与转换器混淆),但 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 中 default detail message对于 f:convertDateTime如下:

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>

两者都是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
<小时/>

另请参阅:

关于validation - JSF Converter 错误消息中的自定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5199954/

相关文章:

javascript - innerHTML 仅适用于某些功能

java - 如何验证 HTML 是否符合 W3C 标准

java - JSF、HighCharts 和 JS

java - OpenEntityManagerInViewFilter 并测试 EntityManager 是否存在

.net - 如何将非硬编码的内容传递给转换器参数

jsf - 'null Converter' 的转换错误设置值 - 为什么我在 JSF 中需要转换器?

python - 验证字典列表中元素格式正确的最佳实践

Python:查询器验证函数

java - FacesMessage Jsf 中的新行字符

c# - C# 中是否可以将服务结果自动转换为相同类型?