【问题标题】:How to escape curly brackets in .properties file in Struts 1.2如何在 Struts 1.2 的 .properties 文件中转义大括号
【发布时间】:2011-01-07 11:40:18
【问题描述】:

我需要在渲染的 JSP 代码中保留属性文件中的大括号。是否可以?

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

在运行时,我得到一个异常:

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

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

【问题讨论】:

  • 你试过像text '{'some text'}' more text这样解析两个大括号吗?
  • 感谢您的回复。是的,它没有帮助。

标签: java struts escaping struts-1


【解决方案1】:

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

使用'{''}' 进行转义。


只是重新阅读您的问题似乎没有帮助。

【讨论】:

    【解决方案2】:

    我在 10 分钟前就跳到了这个问题上。这是我的尝试:使用 '{' 而不是 '{'。 (参考:http://www.asciitable.com/

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

    【讨论】:

      【解决方案3】:

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

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

      这意味着您可能应该尝试像'''{' 这样的花括号。

      【讨论】:

        【解决方案4】:

        由于单引号' 在到达MessageFormat 之前总是被struts 加倍,因此您不能按照@Mihai Toader 的建议生成'''{'。或MessageFormat 要求的任何其他奇数计数

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

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

        如果你提供参数值{},你会得到这个

        You have ${count} unread messages
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-10
          • 1970-01-01
          • 2021-09-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-20
          相关资源
          最近更新 更多