【问题标题】:Custom Variables in JSF Converter's Error MessageJSF 转换器错误消息中的自定义变量
【发布时间】:2011-07-09 04:02:53
【问题描述】:

我有一个表单页面,其中有一个接受日期的 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 错误消息中指定我自己的变量?

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

【问题讨论】:

    标签: validation jsf converter


    【解决方案1】:

    从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 默认在&lt;h:message&gt; 中显示_detail 消息。只有当您使用&lt;h:message showDetail="false" showSummary="true"&gt; 时,才会显示与您的问题相似的那个。我不确定您使用的是哪个 JSF 版本,但在我的 JSF 2.0.3 中,f:convertDateTimedefault 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
    

    另见:

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 2012-05-11
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多