我想为primefaces
selectCheckboxMenu
编写验证码,以防止用户选择少于5个值。
我试图实现BalusC RequiredCheckboxValidator,但无法知道如何访问所选值的大小,是否有人会让我走上正确的道路?
答案 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上找到一个小工作示例。
希望这有帮助。