2011-12-21 19 views
25

que estoy tratando de conseguir el mensaje i18n, como a continuación:primavera con múltiples argumentos

messageCode = Mensaje de prueba para {0} y {1} y {2}.

en JSP, tengo esto:

<spring:message code="messageCode" 
       arguments="${value1},${value2},${value3}" 
       htmlEscape="false"/> 

Los argumentos:

value1=A,B 
value2=C,D 
value3=E,F 

La salida para lo que quiero:

Test message for A,B and C,D and E,F 

La salida real:

Test message for A and B and C 

¿Hay alguna manera de superar esto? Gracias.

George

Respuesta

47

La causa de la probelm es que , (coma) es el separador predeterminado. Entonces, al final, la etiqueta del mensaje de primavera obtendrá la cadena A,B,C,D,E,F para el parámetro arguments, y dividirá esta cadena en 6 argumentos internos diferentes para el mensaje.

Debe cambiar el separador. Si usa ; por ejemplo, entonces funcionará.

<spring:message code="messageCode" 
     arguments="${value1};${value2};${value3}" 
     htmlEscape="false" 
     argumentSeparator=";"/> 

@see Spring Reference: Appendix F.6 The Message Tag

+0

sumando 'htmlEscape =" false " argumentSeparator ="; "' resolvió mi problema – shareef

1

utilizo enfoque completamente diferente. Mi fuente de mensajes basado en la base de datos está expuesto en mi configuración con el nombre i18n:

@Bean(name = {"i18n", "messageSource"}) 
public MessageSource messageSource() { 
    return new JpaMessageSource(); 
} 

y también exponer mis judías con viewResolver.setExposeContextBeansAsAttributes(true); Después de que puedo usar en mis ${i18n.message("messageCode", value1, value2, value3)} jsp-vistas.

Cuestiones relacionadas