我正在尝试根据文档使用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>
答案 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>