jsf - solo - validadores java
Múltiples validadores en un campo con validación de beans JSF (1)
Si su configuración JSF 2 interpreta valores vacíos enviados como ""
y no null
entonces:
El validador @NotBlank
devuelve false
porque su cadena anotada está vacía.
El validador @Max
devuelve false
porque de acuerdo con la implementación de hibernación (supongo que está utilizando la base de implementación de hibernación en sus publicaciones anteriores).
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
//null values are valid
if ( value == null ) {
return true;
}
try {
return new BigDecimal( value ).compareTo( BigDecimal.valueOf( maxValue ) ) != 1;
}
catch ( NumberFormatException nfe ) {
return false;
}
}
En su caso, el parámetro Cadena de value
contiene un valor vacío ("") y el constructor BigDecimal (Cadena) arroja una excepción y luego el validador devuelve false
.
Tienes dos posibles soluciones:
- Configure JSF para
interpret empty submitted values as null
(o) - Cambia tu tipo de
name
campo a numérico en lugar de String.
Estoy tratando de hacer la validación múltiple de un campo
@NotBlank(message = "{name.required}")
@Max(value = 25, message = "{long.value}")
public String name;
JSF:
<h:inputText id="name" value="#{person.name}" size="20">
</h:inputText>
<h:message for="name" style="color:red" />
pero cuando dejo el campo vacío, muestra ambos mensajes de error.
cualquier idea sobre cómo manejar ambos casos, validar el vacío y la longitud máxima de forma independiente.