JSF转换器错误消息中的自定义变量

12

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

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

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

  

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

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

我想改成这样:

  

javax.faces.converter.DateTimeConverter.DATE=字段“{0}”在值为({1})的情况下必须是日期

然而,我不确定JSF如何自动填充{0}和{1}。如何在JSF转换器错误消息中指定自己的变量?

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

1个回答

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信息。只有当您使用时,类似于您问题中的那种消息才会被显示。我不确定您使用的JSF版本是什么,但是在我的JSF 2.0.3中,f:convertDateTime的默认详细信息如下:default detail message
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

另请参见:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接