2011-12-21 3 views
25

Sto cercando di ottenere il messaggio i18n come di seguito:primavera con più argomenti

messageCode = messaggio di prova per {0} e {1} e {2}.

in JSP, ho questo:

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

Gli argomenti:

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

L'uscita per quello che voglio:

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

L'uscita effettiva:

Test message for A and B and C 

C'è un modo per superare questo? Grazie.

George

risposta

47

La causa del problema soltanto è che , (virgola) è il separatore di default. Quindi alla fine il tag messaggio primavera riceverà la stringa A,B,C,D,E,F per il parametro arguments e dividerà questa stringa in 6 diversi argomenti interni per il messaggio.

È necessario modificare il separatore. Ad esempio, se si utilizza ;, funzionerà.

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

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

+0

aggiungendo 'htmlEscape =" false " argumentSeparator ="; "' risolto il mio problema – shareef

1

Io uso approccio completamente diverso. La mia fonte messaggio basato su database è esposto nel mio config con il nome i18n:

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

e ho esporre anche i miei fagioli con viewResolver.setExposeContextBeansAsAttributes(true); Dopo che posso usare ${i18n.message("messageCode", value1, value2, value3)} nei miei jsp-viste.