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

 imba-Y_685 发布于 2023-01-18 20:25

我想写一个验证器,primefaces selectCheckboxMenu以防止用户选择少于5个值.

我试图实现BalusC RequiredCheckboxValidator,但无法知道如何访问所选值的大小,有人能把我放在正确的路径上吗?

1 个回答
  • 你会这样做的.

    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 ]和在线演示中找到.

    希望这可以帮助.

    2023-01-18 20:30 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有