用于validateDateTimeRange的JSPX Trinidad messageDetailNotInRange不起作用

时间:2013-02-25 18:18:38

标签: validation myfaces jspx trinidad

我正在尝试根据文档使用messageDetailNotInRange覆盖默认的validateDateTimeRange消息。

尽管有我的代码,验证器仍会生成默认错误消息:“日期超出有效范围。”谁能在这里看错呢?

<tr:inputDate required="true"
              inlineStyle="color:rgb(0,58,117); font-weight:bold;"
              value="#{processScope.benefit.serviceDate}"
              immediate="false"
              onchange="submit();"
              label="#{mb_ResourceBean.res['claim.serviceDate.label']}">

  <tr:convertDateTime pattern="yyyy/MM/dd"
                      secondaryPattern="yyyyMMdd"
                      type="date"/>

  <tr:validateDateTimeRange minimum="#{bk_ClaimBean.minDate}"
                            maximum="#{bk_ClaimBean.maxDate}"
                            messageDetailNotInRange="The value of {1} exceeds the 30 day limitation to submit claim.  The service date must be within the previous 30 days."/>

</tr:inputDate>

1 个答案:

答案 0 :(得分:0)

您的代码看起来不错。您可以尝试不同的方法,并使用键org.apache.myfaces.trinidad.validator.DateTimeRangeValidator.NOT_IN_RANGE将消息添加到项目的消息包中,以覆盖Trinidad的默认消息。

如果您未在项目中使用消息包,可以将其添加到faces-config.xml

<application>
  <locale-config>
    <default-locale>en</default-locale>
    <supported-locale>en</supported-locale>
  </locale-config>
  <message-bundle>
    messages
  </message-bundle>
</application>

并将消息包的相应属性文件添加到您的应用程序资源中:

messages.properties

如果您使用的是Maven,请确保将资源文件夹添加到build的{​​{1}}部分(如果尚未存在)。

pom.xml

以下是您可以在消息包中覆盖的所有可能消息的列表:

<resources>
  <resource>
    <directory>src/main/resources</directory>
  </resource>
</resources>