JSF Showcase
f:validator
The f:validator Facelet tag exposes the functionality of a Validator inside Facelet views.f:validator
tags facilitate validation of complex data structures.
General Usage
Validators must be annotated with @FacesValidator (or declared as a validator in afaces-config.xml
file) and implement Validator in order to be accessible via the f:validator
tag.
Source Code
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:form> <label class="control-label">#{i18n['please-enter-your-email']}</label> <h:inputText id="email" value="#{inputTextModelBean.text}" label="#{i18n['validate-email-label']}"> <f:validator validatorId="com.liferay.faces.showcase.validator.EmailValidator" /> </h:inputText> <br /> <h:message for="email" /> <hr /> <h:commandButton value="#{i18n['submit']}"> <f:ajax execute="@form" render="@form" /> </h:commandButton> <h:outputText value="#{inputTextModelBean.text}" /> </h:form> </ui:composition>
@ManagedBean @RequestScoped public class InputTextModelBean { private Date date = new GregorianCalendar().getTime(); private String text; public Date getDate() { return date; } public String getText() { return text; } public void setDate(Date date) { this.date = date; } public void setText(String text) { this.text = text; } }
@FacesValidator("com.liferay.faces.showcase.validator.EmailValidator") public class EmailValidator implements Validator { private static final String EMAIL_REGEX = ".+[@].+[.].+"; @Override public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { String message = ""; try { Pattern pattern = Pattern.compile(EMAIL_REGEX); Matcher matcher = pattern.matcher((String) value); if (!matcher.matches()) { message = ValidatorHelper.getMessage(context, "email-is-not-valid"); FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_WARN, message, message); throw new ValidatorException(facesMessage); } } catch (PatternSyntaxException pse) { message = ValidatorHelper.getMessage(context, "unexpected-validation-error-ocurred"); FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_FATAL, message, message); throw new ValidatorException(facesMessage); } } }
Liferay Faces Bridge Implementation 5.0.0 + Showcase Common 3.1.1 + Liferay Faces Util 3.4.1 + Mojarra 2.2.20