Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/12/2015, 22:18
Avatar de Andreslrz
Andreslrz
 
Fecha de Ingreso: septiembre-2008
Mensajes: 99
Antigüedad: 15 años, 8 meses
Puntos: 2
Busqueda JSF Validador Personalizado no funciona

Hola.

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
  1. <?xml version='1.0' encoding='UTF-8' ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml"
  4.       xmlns:h="http://java.sun.com/jsf/html"
  5.       xmlns:f="http://java.sun.com/jsf/core"
  6.       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
  7.       xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
  8.     <h:head>
  9.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  10.         <meta name="viewport" content="width=device-width, initial-scale=1"/>
  11.         <h:outputScript name="./js/jquery.js" />
  12.         <h:outputScript name="./js/bootstrap.js" />
  13.         <h:outputStylesheet name="./css/bootstrap.css"  />
  14.         <title>Facelet Title</title>
  15.     </h:head>
  16.     <h:body>
  17.         <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
  18.             <div class="container-fluid">
  19.                 <div class="navbar-header">
  20.                     <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
  21.                         <span class="sr-only">Toggle navigation</span>
  22.                         <span class="icon-bar"></span>
  23.                         <span class="icon-bar"></span>
  24.                         <span class="icon-bar"></span>
  25.                     </button>
  26.                     <a class="navbar-brand" href="#">Distribuidora Santander</a>
  27.                 </div>
  28.                 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
  29.                     <ul class="nav navbar-nav">
  30.                         <ui:repeat value="#{login.opciones}" var="item" rendered="true">
  31.                             <li> <a href="#{item.link}"> #{item.name}</a> </li>
  32.                         </ui:repeat>
  33.                     </ul>
  34.                 </div>
  35.             </div>
  36.         </nav>
  37.         <h:form styleClass="form-horizontal">
  38.             <div class="col-sm-6 col-sm-offset-9">
  39.                 <div class="panel panel-primary">
  40.                     <div class="panel-heading">
  41.                         Ingreso de Usuarios
  42.                     </div>
  43.                     <div class="panel-body">
  44.                         <h:outputLabel styleClass="control-label " value="Usuario:" for="inputUserName"/>
  45.                         <h:inputText id="inputUserName" styleClass="form-control input-sm" value="#{login.usuario}" required="true"></h:inputText>
  46.                         <h:message for="inputUserName" styleClass="aler alert-danger" />
  47.                         <h:outputLabel styleClass="control-label" value="Contraseña:" for="inputPassword"/>
  48.                         <h:inputSecret id="inputPassword" styleClass="form-control input-sm" value="#{login.contrasena}" required="true">
  49.                             <f:validator validatorId="rutas.com.validadores.ValidadorContrasena" />
  50.                         </h:inputSecret>
  51.                         <h:message for="inputPassword" styleClass="aler alert-danger" showDetail="true"/>
  52.                     </div>
  53.                     <div class="panel-footer">
  54.                         <h:commandButton class="btn btn-primary pull-right" value="Ingresar"></h:commandButton>
  55.                         <span class="clearfix"></span>
  56.                     </div>
  57.                 </div>
  58.             </div>
  59.         </h:form>
  60.     </h:body>
  61. </html>

validador:
Código Java:
Ver original
  1. package rutas.com.validadores;
  2.  
  3. import javax.faces.application.FacesMessage;
  4. import javax.faces.component.UIComponent;
  5. import javax.faces.context.FacesContext;
  6. import javax.faces.validator.Validator;
  7. import javax.faces.validator.ValidatorException;
  8.  
  9. /**
  10.  *
  11.  * @author Andres
  12.  */
  13. public class ValidadorContrasena implements Validator {
  14.  
  15.     /**
  16.      * Creates a new instance of ValidadorContrasena
  17.      */
  18.     public ValidadorContrasena() {
  19.     }
  20.  
  21.     @Override
  22.     public void validate(FacesContext fc, UIComponent uic, Object o) throws ValidatorException {
  23.         String contrasena = (String) o;
  24.         if(contrasena == null || "".equals(contrasena)) {
  25.             FacesMessage msg = new FacesMessage();
  26.             msg.setDetail("La contraseña  es necesaria");
  27.             throw new ValidatorException(msg);
  28.         }
  29.     }
  30.    
  31. }

faces-config.xml
Código XML:
Ver original
  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <faces-config version="2.2"
  3.              xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  4.              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5.              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
  6.     <managed-bean>
  7.         <managed-bean-name>login</managed-bean-name>
  8.         <managed-bean-class>rutas.com.Login</managed-bean-class>
  9.         <managed-bean-scope>request</managed-bean-scope>
  10.     </managed-bean>
  11.     <validator>
  12.         <validator-id>validadorContrasena</validator-id>
  13.         <validator-class>rutas.com.validadores.ValidadorContrasena</validator-class>
  14.     </validator>
  15. </faces-config>