我正在做以下事情:
我想做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,我执行验证。
但是,我不明白。为什么不运行?它没有显示消息。
你可以帮助我吗?