我正在尝试阅读只有一个大括号的文本
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
但我得到同样的例外。
答案 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环境中的属性文件中读取某些加密值