JSF验证器问题

时间:2015-03-28 18:35:29

标签: jsf jsf-2 primefaces custom-validators

我正在做以下事情:

我想做JSF的验证实现接口验证器。我有以下代码:

index.xhtml:

 <h:form  id="inicio">
        <p:panel id="panel" header="Digite sus Credenciales">
        <p:focus context="panel"/>
        <h:panelGrid id="gridInicio" columns="3" cellpadding="5" >

            <p:outputLabel for="identificacion" value="Identificacion:"/>
            <p:inputText id="identificacion" onfocus="true" value="#
            {ingresoMB.usuario.identificacionUsuario}"
            required="true"
            label="Identificacion">
            <f:validator validatorId="numericoValidator"/>
            <f:validateLength minimum="2" />
            </p:inputText>

         </h:panelGrid>

        <p:commandButton value="Ingresar" update="panel"
                        actionListener="#{ingresoMB.verificarInicio()}"
                        icon="ui-icon-check" />
        </p:panel>

face-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    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"
    version="2.2">

    <validator>
        <validator-id>numericoValidator</validator-id>
        <validator-class>co.com.patios.mb.util.validacioncomponentes.numericoValidator</validator-class>
    </validator>
</faces-config>

numericoValidator.java:

import javax.faces.validator.ValidatorException;

public class numericoValidator implements Validator {



    public numericoValidator() {
        // TODO Auto-generated constructor stub


    }


    @Override
    public void validate(FacesContext context, UIComponent component,
            Object value) throws ValidatorException {
        String identificacion = (String) value;
        if(!validarNumerico(identificacion)){
            FacesMessage message = new FacesMessage();
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
            message.setDetail("Campo debe ser Numerico, Verifique !!!");
            message.setSummary("Campo debe ser Numerico, Verifique !!!");
            context.addMessage("inicio", message);  
            throw new ValidatorException(message);
        }


    }



    private boolean validarNumerico(String value){
        try{
            Long.parseLong(value);
        }catch (NumberFormatException e){
            return false;
        }

        return true;
    }



}

现在,在我的index.xhtml中我引用

<f:validator validatorId="numericoValidator"/>

validatorId =&#34; numericoValidator&#34;是我face-config.xml中的Id:

<validator>
        <validator-id>numericoValidator</validator-id>
        <validator-class>co.com.patios.mb.util.validacioncomponentes.numericoValidator</validator-class>
    </validator>

co.com.patios.mb.util.validacioncomponentes.numericoValidator是我的类java,我执行验证。

但是,我不明白。为什么不运行?它没有显示消息。

你可以帮助我吗?

0 个答案:

没有答案