gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:43:25 24 4
gpt4 key购买 nike

我有一个表单页面,其中有一个接受日期的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com