我喜欢
<s:link view="/member/index.xhtml" value="My News" propagation="none"/>
<s:link view="/member/index.xhtml" value="#{msg.myText}" propagation="none"/>
其中messages.properties中myText的值为
myText=My News
示例的第一行工作正常并将文本替换为"My News"
,但使用资源包中的值的第二行也会转义ambersand "My&#160;News"
。
我还试图在属性文件中使用My\u0026\u0023160;News
,My\u0026#160;News
和My\u0026nbsp;News
的ambersand和/或哈希的unicode转义序列,但没有成功。
(使用css no-wrap而不是之前使用的xml编码,但无论如何都会感兴趣)
答案 0 :(得分:1)
编辑 - 回答澄清的问题
第一个显然是内联的,所以翻译知道这是安全的 第二个来自外部源(您使用表达式语言),因此不安全,需要转义。转义的结果将与您所写的一样,基本上它将向您显示HTML实体的确切值 这与安全性(例如XSS)有关,而不是必需的i18n。
之前的尝试
我不太清楚你要求的是什么,但我相信这是“如何展示它?”。
大多数标准JSF控件都包含escape属性,如果设置为false,则不会转义文本。不幸的是,你似乎正在使用像SeamTools这样没有这个属性的东西。
嗯,在这种情况下,没有太多工作要做。除非您可以使用标准控件,否则您应该尝试将您的属性文件实际保存为Unicode(实际上是UTF-16 BigEndian)并简单地放置有效的Unicode非破坏空格字符。从理论上讲应该有效;最新版本的Java支持Unicode编码的属性文件(虽然我不记得它是Java SE 5还是Java SE 6)...