当我尝试在验证时调用 h:inputText 标签字段值时遇到了一个特殊问题。它仅在我将静态值传递给标签字段时才有效。当我将动态值传递给它时,当该字段的某些验证失败时,它无法呈现标签。
<h:inputText id="fullNameField" value="#{newUserFormBean.fullName}"
**label="${nlsSupport.label_fullName}"** required="true" size="32" styleClass="required">
<f:validateLength minimum="3" maximum="64"/>
</h:inputText>
如果最小长度验证失败,则错误消息显示为:
此处未呈现标签:必须至少 3 个字符
但是,当我对标签进行硬编码而不是向其传递动态值时,它会显示有效的验证消息,并在屏幕上打印标签名称。
<h:inputText id="fullNameField" value="#{newUserFormBean.fullName}"
**label="Full Name"** required="true" size="32" styleClass="required">
<f:validateLength minimum="3" maximum="64"/>
</h:inputText>
现在,如果最小长度验证失败,则错误消息显示为:
全名:必须至少 3 个字符
我还查看了 JSF 文档,它读取标签接受表达式语言表达式。那么为什么验证失败后传递的动态值不渲染呢?
另外,我需要动态传递标签(来自资源包),以便为不同的语言添加国家语言功能。这就是迫使我将动态值传递给标签属性而不是静态字段的原因。
谢谢。