我今天在使用 Spring 的以下代码中遇到了一个问题:
String tabTitle = messageSource.getMessage(tabName, new Object[] {}, tabName, locale)
这用于获取我们网站顶部的一系列选项卡的显示标题(uPortal的一个实例)。问题是如果tabName
包含单引号,它会自动从结果中删除。例如What's For Lunch
变成Whats For Lunch
.
我已经找到了原因,这是因为该方法中的第三个参数应该是java.text.MessageFormat中指定的格式。需要2个单引号。
因为我们没有传递任何具有格式的参数,所以我可以tabName
在将其作为第三个参数传递之前安全地转义任何特殊字符。我可以在这里用 2 个单引号手动替换单引号,但我真正想要的是类似Pattern.quote()
,仅用于MessageFormat
语言,可以保证处理所有转义。这样的事情存在吗?