//implementamos una anotacion de faces validator que validara en tiempo de ejecucion y le damos un id "ValidateEmptyFields"
@FacesValidator("ValidateEmptyFields")
//la clase la implementaremos de Validator, despues de ello implementar todos los metodos abstractos
public class validateEmptyFields implements Validator{
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String label;
//es para los campos de entrada que vamos a recuperar y lo convertimos en comonent para validar
HtmlInputText htmlIT = (HtmlInputText) component;
//condicionamos si el label es null o si existe pero es null hara algo sino hara otra funcion
if(htmlIT.getLabel() == null || htmlIT.getLabel().trim().equals("")){
//sirve para identificar los tags x su id en caso de q no tengan label y si no tienen id jsf se encarga de poner por defecto
label = htmlIT.getId();
}else{
//obtenemos todos los label
label = htmlIT.getLabel();
}
//ahora validaremos con una condicional el Object llamado value, trim sirve para quitar los espacios y manda la excepcion
if(value.toString().trim().equals("")){
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", label+": Campo Obligatorio"));
}
}
Una vez que tengamos la clase volveremos a modificar nuestro formulario que ya teniamos hecho a cada <p:inputText> que consideremos que es muy importante pondremos la validacion de campos de acuerdo como se muestra en el ejemplo:
<h:form id="frmRegisterUser">
<p:messages id="msjgral" showDetail="true" autoUpdate="true" closable="true"/>
<h:panelGrid columns="2">
<p:outputLabel value="Nombre" for="txtName"/>
<p:inputText id="txtName" label="Nombre" value="#{managedBeanUser.getUser().nombres}">
<f:validator validatorId="ValidateEmptyFields"/>
</p:inputText>
<p:outputLabel value="Apellido Paterno" for="txtAp"/>
<p:inputText id="txtAp" label="Apellido Paterno" value="#{managedBeanUser.getUser().ap}">
<f:validator validatorId="ValidateEmptyFields"/>
</p:inputText>
<p:outputLabel value="Apellido Materno" for="txtAm"/>
<p:inputText id="txtAm" label="Apellido Materno" value="#{managedBeanUser.getUser().am}">
<f:validator validatorId="ValidateEmptyFields"/>
</p:inputText>
<p:outputLabel value="Usuario" for="txtUser"/>
<p:inputText id="txtUser" label="Usuario" value="#{managedBeanUser.getLogin().user}">
<f:validator validatorId="ValidateEmptyFields"/>
</p:inputText>
<p:outputLabel value="Contraseña" for="txtPass"/>
<p:password id="txtPass" label="Contraseña" value="#{managedBeanUser.getLogin().pass}">
<f:validator validatorId="ValidateEmptyFields"/>
</p:password>
<p:outputLabel value="Confirmar Contraseña" for="txtPassConfirm"/>
<p:password id="txtPassConfirm" label="Confirmar Contraseña" value="#{managedBeanUser.confirPassword}">
<f:validator validatorId="ValidateEmptyFields"/>
</p:password>
<p:outputLabel value="E-Mail" for="txtEmail"/>
<p:inputText id="txtEmail" label="E-Mail" value="#{managedBeanUser.getUser().email}" size="39">
<f:validator validatorId="ValidateEmptyFields"/>
</p:inputText>
<p:outputLabel value="Direccion" for="txtDireccion"/>
<p:inputText id="txtDireccion" label="Direccion" value="#{managedBeanUser.getUser().direccion}" size="49"/>
<p:outputLabel value="Fecha de nacimiento" for="txtCalendar"/>
<p:calendar id="txtCalendar" label="Fecha de nacimiento" value="#{managedBeanUser.getUser().fechaNacimiento}"/>
<h:outputText value="Sexo"/>
<p:selectOneRadio id="radSex" label="Sexo" value="#{managedBeanUser.getUser().sexo}">
<f:selectItem itemLabel="Hombre" itemValue="H"/>
<f:selectItem itemLabel="Mujer" itemValue="M"/>
</p:selectOneRadio>
<p:commandButton id="btn1" value="Registrar" action="#{managedBeanUser.registerUser()}"/>
</h:panelGrid>
</h:form>
Pondremos la etiqueta f:validator con el parametro validatorId que es el nombre que le pusimos en la clase como id ValidateEmptyFields y en ejecucion a la hora de validar saldra un mensaje como el siguiente:
No hay comentarios:
Publicar un comentario