Las órdenes de los parámetros por defecto de validación de frijol?
Actualmente estoy tratando de proporcionar un mensaje de validación personalizado utilizando la validación de bean.
Actualmente utilizando spring mvc 3.1.1 + validación apean bean.
En mi frijol, especifico:
<code>@Size(min=1, max=50) private String title; </code>
Y en mis messages.properties:
<code>Size.addForm.title=The title must not be empty and must not exceed {1} characters. </code>
Del experimento, descubrí que:
{0} se refiere a 'título'{1} se refiere al máximo, que es 50{2} se refiere al min, que es 1y se mostrará comoThe title must not be empty and must not exceed 50 characters.
cual es correcta.
Pero todo esto es de experimentos. me preguntosi hay documentaciones que indiquen el orden de los parámetros para las restricciones predeterminadas ?
Intenté con suerte usandoSize.addForm.title=The title must not be empty and must not exceed {max} characters.
basándose en el ValidationMessages.properties predeterminado, pero termina con NumberFormatException en el{max}
. Creo que tiene algo que ver con las interpolaciones?
Entonces, cada uno de estos falla independientemente con la excepción NumberFormatException en el{max}
:
Este es el stacktrace:
<code>java.lang.NumberFormatException: For input string: "max" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.text.MessageFormat.makeFormat(Unknown Source) at java.text.MessageFormat.applyPattern(Unknown Source) at java.text.MessageFormat.<init>(Unknown Source) at org.springframework.context.support.MessageSourceSupport.createMessageFormat(MessageSourceSupport.java:151) at org.springframework.context.support.ResourceBundleMessageSource.getMessageFormat(ResourceBundleMessageSource.java:281) at org.springframework.context.support.ResourceBundleMessageSource.resolveCode(ResourceBundleMessageSource.java:188) at org.springframework.context.support.AbstractMessageSource.getMessageInternal(AbstractMessageSource.java:205) at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:146) at org.springframework.context.support.AbstractApplicationContext.getMessage(AbstractApplicationContext.java:1214) at org.springframework.web.servlet.support.RequestContext.getMessage(RequestContext.java:571) at org.springframework.web.servlet.support.BindStatus.initErrorMessages(BindStatus.java:177) at org.springframework.web.servlet.support.BindStatus.getErrorMessages(BindStatus.java:273) at org.springframework.web.servlet.tags.form.ErrorsTag.exposeAttributes(ErrorsTag.java:173) at org.springframework.web.servlet.tags.form.AbstractHtmlElementBodyTag.writeTagContent(AbstractHtmlElementBodyTag.java:48) at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) </code>
Este es el único que funciona con el parámetro nombrado,tiene que ser ValidationMessages.properties, y debe ser exactamente la clave que existe en el paquete de recursos predeterminado por la implementación jsr 303 :
ValidationMessages.properties : javax.validation.constraints.Size.message = sabes wad, el tamaño debe estar entre{min} y{max}Básicamente, la conclusión actual es que, de manera predeterminada, no puedo usar parámetros nombrados en mis mensajes específicos. El parametro nombradosolo funciona cuando yoanular la clave exacta en la base de datos jsr303 por defecto&& cuando utilizo el mismo nombre de archivo de Resourcebundle jsr303 predeterminado, que esValidationMessages.properties
Prefiero evitar tener que jugar con interpolación por ahora, de ahí la pregunta original sobre cómo descubrir que {0} o {1} o {2} se refieren a qué se encuentra en la documentación.