Ответ 1
Вам нужно 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
.