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



我想为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]上找到一个小的工作示例,以及一个在线演示。

相关内容

  • 没有找到相关文章

最新更新