如何设置primefaces selectCheckboxMenu验证器以进行最小选择

时间:2014-03-10 17:32:18

标签: validation jsf jsf-2 primefaces

我想为primefaces selectCheckboxMenu编写验证码,以防止用户选择少于5个值。

我试图实现BalusC RequiredCheckboxValidator,但无法知道如何访问所选值的大小,是否有人会让我走上正确的道路?

1 个答案:

答案 0 :(得分:5)

你会这样做。

<强> 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]和online Demo上找到一个小工作示例。

希望这有帮助。