Spring消息标记与单引号字符有麻烦

时间:2015-06-01 17:08:43

标签: spring properties single-quotes

我的资源包中定义了3个属性:

test.key1 = Just a normal snippet.
test.key2 = snippet with {0} arguments {1}.
test.key3 = snippet with 'charac'ter'.
test.key4 = snippet with {0} arguments' and 'characters {1}.

以下是我在jsp中访问它们的方法:

<spring:message code="test.key1"/>
<spring:message code="test.key2" arguments="ARG1,ARG2"/>
<spring:message code="test.key3"/>
<spring:message code="test.key4" arguments="ARG1,ARG2"/>

呈现它们看起来像这样:

Just a normal snippet.
snippet with ARG1 arguments ARG2.
snippet with 'charac'ter'.
snippet with ARG1 arguments and characters {1}.

所以基本上发生的事情是:只要出现'(单引号)字符,就不再填充参数,并且不再渲染单引号。有趣的是,当单独应用参数或单引号时,spring没有问题。

我能够通过使用像这样的2x单引号来修复测试场景4:

test.key4 = snippet with {0} arguments'' and ''characters {1}.

哪个也正确呈现

snippet with ARG1 arguments' and 'characters ARG2.

当然这是一个维护噩梦:所有具有单引号但属性为NO的属性应该具有1x单引号,并且所有具有单引号字符和参数的属性都需要2x单引号。

为什么会这样,有没有办法解决这种不良行为?

1 个答案:

答案 0 :(得分:0)

显然,这种奇怪的行为是&#34;按照设计&#34;。所有信息都汇总在this article

要解决这个问题,你要么只在具有参数的属性中加倍单引号,要么在你的消息reosurce bean中添加一个额外的属性,在这种情况下,所有单引号都必须加倍,即使在不包含这些内容的属性中也是如此。有争论。这更加一致!

<property name="alwaysUseMessageFormat" value="true"/>