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