我需要在渲染的JSP代码中保留属性文件中的花括号。可能吗?
我尝试了以下选项:\{
,'{
,{{
,'{'
,/{
,但没有帮助。
在运行时,我得到一个例外:
java.lang.IllegalArgumentException:无法解析参数编号
问题是struts将{}
作为运行时值的占位符进行处理。非常感谢任何帮助。
答案 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