Estoy tratando de hacer una validacion en jsf, implementando la interfaz Validator pero me aparece un mensaje diciendo que no se encuentra la clase validadora.
dejo el codigo:
JSF:
Código Java:
Ver original
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"> <h:head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <h:outputScript name="./js/jquery.js" /> <h:outputScript name="./js/bootstrap.js" /> <h:outputStylesheet name="./css/bootstrap.css" /> <title>Facelet Title</title> </h:head> <h:body> <nav class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Distribuidora Santander</a> </div> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <ui:repeat value="#{login.opciones}" var="item" rendered="true"> <li> <a href="#{item.link}"> #{item.name}</a> </li> </ui:repeat> </ul> </div> </div> </nav> <h:form styleClass="form-horizontal"> <div class="col-sm-6 col-sm-offset-9"> <div class="panel panel-primary"> <div class="panel-heading"> Ingreso de Usuarios </div> <div class="panel-body"> <h:outputLabel styleClass="control-label " value="Usuario:" for="inputUserName"/> <h:inputText id="inputUserName" styleClass="form-control input-sm" value="#{login.usuario}" required="true"></h:inputText> <h:message for="inputUserName" styleClass="aler alert-danger" /> <h:outputLabel styleClass="control-label" value="Contraseña:" for="inputPassword"/> <h:inputSecret id="inputPassword" styleClass="form-control input-sm" value="#{login.contrasena}" required="true"> <f:validator validatorId="rutas.com.validadores.ValidadorContrasena" /> </h:inputSecret> <h:message for="inputPassword" styleClass="aler alert-danger" showDetail="true"/> </div> <div class="panel-footer"> <h:commandButton class="btn btn-primary pull-right" value="Ingresar"></h:commandButton> <span class="clearfix"></span> </div> </div> </div> </h:form> </h:body> </html>
validador:
Código Java:
Ver original
package rutas.com.validadores; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.validator.Validator; import javax.faces.validator.ValidatorException; /** * * @author Andres */ public class ValidadorContrasena implements Validator { /** * Creates a new instance of ValidadorContrasena */ public ValidadorContrasena() { } @Override if(contrasena == null || "".equals(contrasena)) { FacesMessage msg = new FacesMessage(); msg.setDetail("La contraseña es necesaria"); throw new ValidatorException(msg); } } }
faces-config.xml
Código XML:
Ver original
<?xml version='1.0' encoding='UTF-8'?> <faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"> <managed-bean> <managed-bean-name>login</managed-bean-name> <managed-bean-class>rutas.com.Login</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> <validator> <validator-id>validadorContrasena</validator-id> <validator-class>rutas.com.validadores.ValidadorContrasena</validator-class> </validator> </faces-config>