具有多个参数的 spring 消息标记

2022-09-01 06:39:33

我正在尝试获取如下所示的i18n消息:

messageCode=测试{0}消息,{1}和{2}。

在jsp中,我有这个:

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

参数:

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

我想要的输出:

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

实际输出:

Test message for A and B and C

有什么办法可以克服这一点吗?谢谢。

乔治


答案 1

问题的原因是 (逗号) 是默认的分隔符。因此,在最后,spring消息标签将获得参数参数的字符串A,B,C,D,E,F,并将此字符串拆分为6个不同的内部参数。

必须更改分隔符。例如,如果您使用,那么它将起作用。;

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

@See春季参考:附录 F.6 消息标记


答案 2

您还可以将不同的值作为数组发送,并且不会为spring在如何解析字符串参数时出错留出任何空间。

<c:set var="value1" value="A,B;X" />
<c:set var="value2" value="C,D;Y" />
<c:set var="value3" value="E,F;Z" />

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

这样,您就不必担心新的分隔符在某个时候以某种方式再次用于值。