我试图在JSF(接缝的xhtml文件)中调用validateLength
<f:validateLength minimum="2" maximum="512"/>
适用于文本长度为513和1的值(即显示警告,但不显示0)
正在使用它的输入文本设置为required = false(因此它可以使用a4j支持空字段,我必须根据输入显示预览)
我看到的问题是在辅助类中有一个验证器方法,但是当输入的长度为0时它会被忽略(即我什么都不放,它适用于非空值)。
我在这里也有一个NullableStringConverter,但是我注意到只要该转换器设置空字符串的null值,就会跳过验证器。这是inputText
中的完整片段<h:inputText id="linkNameInput"
value="#{someHelper.name}"
validator="#{someHelper.validateMethod}"
required="false">
<f:validateLength minimum="2" maximum="512"/>
<f:converter converterId="NullableStringConverter" />
</h:inputText>
我只想验证验证器中的空字符串。
答案 0 :(得分:1)
我只想验证验证器中的空字符串。
这在JSF 1.x中是不可能的。这是自JSF 2.0以来唯一可行的(支持JSR303 Bean Validation支持)。
我不确定您为什么要验证自定义验证程序中的空字符串。在那里,您通常使用required="true"
属性。如果唯一的目标是更改所需的消息,那么只需使用requiredMessage
属性。
<h:inputText ... required="true" requiredMessage="Please enter name" />
答案 1 :(得分:0)
如前所述,不支持验证JSF 1.2组件中的空输入String。但是,您可以在表单提交时检查辅助bean中的此null /空模型值,并添加映射到该特定输入字段的FacesMessage。这将允许与服务器端组件特定的错误消息显示(<h:message for="componentId" />
)集成。
FacesContext.getCurrentInstance().addMessage("componentId",
facesMessageForComponent);