Что вам нужно, это Validator
. Это должно выглядеть так:
@ManagedBean
@RequestScoped
public class DiscountCodeValidator implements Validator {
@EJB
private MrBean mrBean;
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String discountCode = (String) value;
if (!mrBean.checkDiscountCodeExistence(discountCode)) {
throw new ValidatorException(new FacesMessage("This code is not valid!"));
}
}
}
В вашем файле .xhtml вы можете объявить этот валидатор следующим образом:
<h:inputText id="discountCode" value="#{someBean.discountCode}"
validator="#{discountCodeValidator}"
required="true" requiredMessage="Discount code is required.">
<f:ajax event="blur" render="discountMsg" />
</h:inputText>
<h:message for="discountCode" id="discountMsg"/>
Стоит отметить, что я предполагаю, что вы добавите EJB для проверки существования кода скидки с помощью функции checkDiscountCodeExistence()
. Следовательно, я аннотировал вышеупомянутый Валидатор как @ManagedBean
. Если вам не нужно вводить какие-либо EJB-компоненты, вы можете пометить Validator с помощью @FacesValidator
.