属性文件中的单个大括号

Single Curly Bracket in Properties file

我正在尝试阅读只有一个大括号的文本

Y8R30j)i{sjmPXfE

使用 MessageResources.getMessage()

从 .properties 文件

我收到了这个异常

java.lang.IllegalArgumentException: Unmatched braces in the pattern.
at java.text.MessageFormat.applyPattern(MessageFormat.java:508)
at java.text.MessageFormat.<init>(MessageFormat.java:363)

我试图通过

逃脱
Y8R30j)i'{'sjmPXfE

但我遇到了同样的异常。

org.apache.struts.util.MessageResources 使用 java.text.MessageFormat 将大括号之间的内容解释为要用字符串替换的模式或占位符。

根据例外情况,很明显 java 无法找到键值中左大括号的右大括号,可能的解决方法(使用 struts 1.3)是以下。 (鉴于 unicode 转义或任何其他转义不起作用,可以参考 java.text.MessageFormat.applyPattern() 方法以进一步转义)

在消息资源文件中指定密钥如下 -

key=Y8R30j)i{0}sjmPXfE

在您的操作中使用以下代码读取键值(或任何其他 java)class

MessageResources messages = MessageResources.getMessageResources("MessageResources");
Object[] leftCurlyBrace = { "{" };
String value = messages.getMessage(request.getLocale(), "key", leftCurlyBrace);

我假设您正在 struts 1.x J2EE 环境

中尝试从属性文件中读取一些加密值