我想写一个验证器,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>
验证器
@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); } } }
一个小的工作示例可以在github [ 1 ] [ 2 ]和在线演示中找到.
希望这可以帮助.