validation - validacion - validadores java
Mensaje validador JSF personalizado para un solo campo de entrada (1)
Me gustaría tener diferentes mensajes de validación para cada validador para diferentes campos de entrada.
¿Es posible en JSF tener un mensaje de validación diferente para un único validador (por ejemplo, <f:validateLongRange>
) para cada campo de entrada?
Hay varias formas:
El más fácil, simplemente establece el atributo
validatorMessage
.<h:inputText ... validatorMessage="Please enter a number between 0 and 42"> <f:validateLongRange minimum="0" maximum="42" /> </h:inputText>
Sin embargo, esto también se usa cuando usa otros validadores. No estoy seguro si eso formaría un problema entonces. Si es así, dirígete a las siguientes maneras.
Cree un validador personalizado que amplíe el validador estándar, como
LongRangeValidator
en su caso, captureValidatorException
y vuelva a lanzarlo con el mensaje personalizado deseado. P.ej<h:inputText ...> <f:validator validatorId="myLongRangeValidator" /> <f:attribute name="longRangeValidatorMessage" value="Please enter a number between 0 and 42" /> </h:inputText>
con
public class MyLongRangeValidator extends LongRangeValidator { public void validate(FacesContext context, UIComponent component, Object convertedValue) throws ValidatorException { setMinimum(0); // If necessary, obtain as custom attribute as well. setMaximum(42); // If necessary, obtain as custom attribute as well. try { super.validate(context, component, convertedValue); } catch (ValidatorException e) { String message = (String) component.getAttributes().get("longRangeValidatorMessage"); throw new ValidatorException(new FacesMessage(message)); } } }
Use OmniFaces
<o:validator>
que permite configurar un mensaje de validación diferente por validador:<h:inputText ...> <o:validator validatorId="javax.faces.Required" message="Please fill out this field" /> <o:validator validatorId="javax.faces.LongRange" minimum="0" maximum="42" message="Please enter a number between 0 and 42" /> </h:inputText>
Ver también:
- Cambie el mensaje predeterminado "Error de validación: se requiere valor" a solo "Se requiere valor"
- ¿Cómo personalizar el mensaje de conversión JSF ''debe ser un número que consta de uno o más dígitos''?
- Internacionalización en JSF, ¿cuándo usar el paquete de mensajes y el paquete de recursos?
- Mensajes del paquete de recursos del convertidor JSF