Сначала я попытался использовать только атрибут 'required', но так как он никогда не проверялся, я добавил чрезвычайно простой валидатор, который проверяет длину свойства 'color' ... но, похоже, ничего не работает.В той же форме у меня есть другие обязательные компоненты inputText, которые правильно проверяются при нажатии кнопки command.
У меня есть следующий код:
<p:colorPicker id="color" value="#{backBean.color}" required="true" requiredMessage="Required!" validator="ColorValidator" validatorMessage="Required!"/>
<p:commandButton id="createOrUpdateButton"
actionListener="{backBean.createOrUpdate}"
process="@form"
update="@all"
value="Save"
style="width: 95%;" />
Validator:
@FacesValidator("ColorValidator")
public class ColorValidator implements Validator{
public ColorValidator(){
}
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
if (value==null || value.toString().trim().isEmpty()) {
FacesMessage msg = new FacesMessage("Color validation failed.","Please select a color.");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}