如何在Struts 1.2中的.properties文件中转义大括号

时间:2011-01-07 11:40:19

标签: java struts escaping struts-1

我需要在渲染的JSP代码中保留属性文件中的花括号。可能吗?

我尝试了以下选项:\{'{{{'{'/{,但没有帮助。

在运行时,我得到一个例外:

  

java.lang.IllegalArgumentException:无法解析参数编号

问题是struts将{}作为运行时值的占位符进行处理。非常感谢任何帮助。

4 个答案:

答案 0 :(得分:9)

http://struts.apache.org/2.x/docs/how-to-escape-special-chars-in-resource-bundles.html

使用'{''}'来逃避。


重新阅读你的问题似乎没有用。

答案 1 :(得分:1)

我在10分钟前就遇到了这个问题。这是我的尝试:把'&#123'代替'{'。 (参考:http://www.asciitable.com/

不要使用Oct或Hex代码,因为Java会在实际读取密钥之前将这些数字解析为{因此,它会导致同样的问题。只有HTML代码才有效,因为Java不会解析它,但JSP页面将

答案 2 :(得分:0)

来自MessageFormat规范:http://download.oracle.com/javase/1.4.2/docs/api/java/text/MessageFormat.html

  

在字符串中,“''”表示单引号。 QuotedString可以   包含任意字符除外   单引号;周围的单身   引号被删除。 UnquotedString   可以包含任意字符   除了单引号和左卷曲   括号。因此,应该是一个字符串   导致格式化的消息   “'{0}'”可写为“'''{'0}''”   或“'''{0}'''”。

这意味着你应该尝试像'''{'这样的大括号。

答案 3 :(得分:0)

由于单引号'在到达struts之前总是被MessageFormat加倍,因此您不能像@Mihai Toader那样产生'''{'。或MessageFormat

要求的其他任何奇数计数

我最终使用了值分别为{}的参数

my.property = You have ${0}count{1} unread messages

如果提供参数值{},您将得到

You have ${count} unread messages