Saltar al contenido

¿Cómo validar campos numéricos con validateRegex en una página JSF?

Solución:

los <f:validateRegex> está destinado a ser utilizado en String propiedades solamente. Pero tienes un int propiedad para la que JSF ya convertiría el enviado String valor para Integer antes de la validación. Esto explica la excepción que está viendo.

Pero como ya estás usando un int propiedad, ya obtendría un error de conversión cuando ingrese no dígitos. El mensaje de error de conversión es, por cierto, configurable por converterMessage atributo. Por lo que no es necesario utilizar expresiones regulares en absoluto.

En cuanto al requisito funcional concreto, parece que desea validar la longitud mínima / máxima. Para eso deberías estar usando <f:validateLength> en lugar de. Use esto en combinación con el maxlength atributo para que el usuario final no pueda ingresar más de 6 caracteres de todos modos.

<h:inputText value="#{bean.number}" maxlength="6">
    <f:validateLength minimum="6" maximum="6" />
</h:inputText>

Puede configurar el mensaje de error de validación mediante el validatorMessage por cierto. Entonces, todo con todo podría verse así:

<h:inputText value="#{bean.number}" maxlength="6"
    converterMessage="Please enter digits only."
    validatorMessage="Please enter 6 digits.">
    <f:validateLength minimum="6" maximum="6" />
</h:inputText>
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *