primefaces形成多个验证
问题描述:
我有问题小时,以验证多个组件:形式......我需要验证这两个inputText的成分,但如果我不喜欢这样写道:primefaces形成多个验证
<p:inputText id="actionNameInput"
title="TO DO"
value="#{repositoryBean.newActionName}"
label="Action name"
required="true"
requiredMessage="Action name is missing.">
<f:validator validatorId="inputTextValidator"/>
<f:attribute name="input1" value="Action name" />
</p:inputText>
<p:inputText id="identifierInput"
title="TO DO"
value="#{repositoryBean.newActionRegex}"
label="Identifier"
required="true"
requiredMessage="Identifier is missing.">
<f:validator validatorId="inputTextValidator"/>
<f:attribute name="input1" value="Identifier" />
</p:inputText>
这里是验证器类:
@FacesValidator(value = "inputTextValidator")
public class AddActionValidatorInputText implements Validator{
@Override
public void validate(FacesContext facesContext, UIComponent uiComponent, Object o) throws ValidatorException {
if(((String)o).length() < 3){
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
uiComponent.getAttributes().get("input1")+" should be longer than 3characters.", null);
FacesContext.getCurrentInstance().addMessage(null, message);
throw new ValidatorException(message);
}
}
}
只会验证第一inputText的...我tryied this,但我不能得到成分值(总是空)......我读smthing约缝的面孔,但如果我申请了,有一些更大的错误(比如它需要越来越多的依赖...)。我不想在我的bean类中验证它。
答
Here你可以找到问题的可能解决方案。而为了让值不为空,使用valueChangeListener属性是这样的:
<p:inputText id="actionNameInput"
title="TO DO"
value="#{repositoryBean.newActionName}"
label="Action name"
required="true"
requiredMessage="Action name is missing."
valueChangeListener="#{repositoryBean.onNewActionNameChange}">
<f:validator validatorId="inputTextValidator"/>
<f:attribute name="input1" value="Action name" />
</p:inputText>
和支持bean:
public void onNewActionNameChange(ValueChangeEvent event) {
setNewActionName(event.getNewValue().toString());
}
This article关于JSF生命周期可以帮助你了解里面是什么回事。
它是否适用于'h:inputText'? – Kukeltje