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>