属性文件中的单个卷曲括号

时间:2015-10-14 20:13:53

标签: java java-ee properties

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

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

但我得到同样的例外。

1 个答案:

答案 0 :(得分:0)

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

除了异常之外,很明显java无法找到你的键值中的开口花括号的右括号,可能的解决方法(使用struts 1.3)如下所示。 (根据unicode转义或任何其他转义不起作用,可以参考java.text.MessageFormat.applyPattern()方法以进一步转义)

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

key=Y8R30j)i{0}sjmPXfE

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

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

假设您正在尝试从struts 1.x J2EE环境中的属性文件中读取某些加密值