Validations are executed on the server side and page is updated with the result.
Documentation<h:form> <p:panel id="panel" header="New User"> <p:messages id="msgs" /> <h:panelGrid columns="3" cellpadding="5"> <p:outputLabel for="firstname" value="Firstname:" /> <p:inputText id="firstname" value="#{userView.firstname}" required="true" label="Firstname"> <f:validateLength minimum="2" /> </p:inputText> <p:message for="firstname" display="icon" /> <p:outputLabel for="lastname" value="Lastname:" /> <p:inputText id="lastname" value="#{userView.lastname}" label="Lastname" required="true"> <f:validateLength minimum="2" /> <p:ajax update="msgLastname" event="keyup" /> </p:inputText> <p:message for="lastname" id="msgLastname" display="icon" /> </h:panelGrid> <p:commandButton value="Save" update="panel" action="#{userView.save}" icon="pi pi-check" /> </p:panel> </h:form>
@Named @RequestScoped public class UserView { private String firstname; private String lastname; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public void save() { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Welcome " + firstname + " " + lastname)); } }