2010-11-16 17 views
6

Quiero definir un conjunto de mensajes de error para que cuando los errores de validación generan códigos, esos códigos recogen el mensaje de error correspondiente e imprimirlos.¿Cómo puedo definir y obtener mensajes basados ​​en la configuración regional en Spring MVC?

Por el mero hecho de aprender y desarrollar una aplicación web extensible, me gustaría seguir la ruta correcta de i18n, aunque ahora solo necesito definir un conjunto de mensajes (en inglés).

Por lo tanto, las configuraciones regionales deben ser todas predeterminadas en inglés cuando no encuentren sus propios recursos (que aún no he definido).

Nunca utilicé la funcionalidad i18n de Java. Y los documentos de primavera asumen que tengo este conocimiento.

¿Alguien podría darme un empujón gental en la dirección correcta?

He definido un messageSource en mi contexto de aplicación web dispatcher-servlet.xml. Tengo un validador que produce un objeto BindingResult con un campo rechazado "username", con el código "username.taken". Puedo generar el mensaje predeterminado.

Ahora solo necesito obtener el mensaje de error del archivo errormessages.properties en mi vista.

¿Cómo puedo resolver un código de error en un mensaje?

<bean id="messageSource" 
     class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basenames"> 
    <list> 
     <value>errormessages</value> 
    </list> 
    </property> 
</bean> 

Respuesta

9

Depende de lo que quiere hacer con este texto. La primera posibilidad es hacer llegar el mensaje mediante programación:

@Autowired 
private MessageSource messageSource; 

@RenderMapping(params = "render=details") 
public String showDetails (Model model, Locale locale) { 
    messageSource.getMessage(<your key goes here>, null, locale); 
} 

De esta manera es muy poco común, hacer que usted tiene que conseguir las claves de mensaje formar los errores de objeto por sí mismo.

Otra forma más común es usar la compilación en las extensiones de vista que se entregan con spring mvc. No lo escribiste, pero creo que estás usando JSPs. En ese caso, simplemente hay que escribir algo como esto en su JSP:

<!-- showing errors --> 
<div> 
    <form:errors path="*" /> 
</div> 

<!-- showing arbitrary messages --> 
<div> 
    <spring:message code="${success.messageKey}"/> 
</div> 

Para leer más Te sugiero http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/view.html

+0

Gran respuesta, muchas gracias por eso !! Creo que mi preocupación más apremiante va desde el error de campo, que produce algo así como 4 códigos de error, y por lo tanto elegir entre cuál de los 4 códigos de error (o el mensaje predeterminado) debe elegirse y presentarse en la página resultante. Pero publiqué otra pregunta más específica en ese sentido: http://stackoverflow.com/questions/4202437/spring-how-to-resolve-a-validation-error-error-code-error-message Gracias por esta respuesta, ¡ha sido muy útil también! –

Cuestiones relacionadas