Jal*_*rdo 0 validation jsf primefaces jsf-2
我想写一个验证器,primefaces selectCheckboxMenu以防止用户选择少于5个值.
我试图实现BalusC RequiredCheckboxValidator,但无法知道如何访问所选值的大小,有人能把我放在正确的路径上吗?
你会这样做的.
XHTML
<p:selectCheckboxMenu value="#{mainBean.selectedList}" >
<f:selectItems value="#{mainBean.map}" />
<f:validator validatorId="limitCheckboxMenuValidator" />
<f:attribute name="minLimit" value="5" />
</p:selectCheckboxMenu>
Run Code Online (Sandbox Code Playgroud)
验证器
@FacesValidator("limitCheckboxMenuValidator")
public class LimitCheckboxMenuValidator implements Validator {
public LimitCheckboxMenuValidator() {
}
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
//get limit
Integer minLimit = Integer.parseInt((String)component.getAttributes().get("minLimit"));
SelectCheckboxMenu myComponent = (SelectCheckboxMenu)component;
if (((String[])myComponent.getSubmittedValue()).length < minLimit) {
FacesMessage msg
= new FacesMessage("Limit failed",
"Min selection must be " + minLimit);
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
Run Code Online (Sandbox Code Playgroud)
一个小的工作示例可以在github [ 1 ] [ 2 ]和在线演示中找到.
希望这可以帮助.