【问题标题】:escaped Ambersand in JSF i18n Resource Bundle在 JSF i18n 资源包中转义 Ambersand
【发布时间】:2011-06-07 11:14:51
【问题描述】:

我有类似的东西

<s:link view="/member/index.xhtml" value="My&#160;News" propagation="none"/>
<s:link view="/member/index.xhtml" value="#{msg.myText}" propagation="none"/>

messages.properties 中 myText 的值在哪里

myText=My&#160;News

示例的第一行工作正常并将文本替换为"My&amp;nbsp;News",但第二行使用资源包中的值也转义了琥珀色"My&amp;amp;#160;News"

我还尝试在属性文件中使用 unicode 转义序列来处理 ambersand 和/或带有 My\u0026\u0023160;NewsMy\u0026#160;NewsMy\u0026nbsp;News 的哈希,但没有成功。

(使用 css no-wrap 而不是之前使用的 xml 编码,但无论如何都会感兴趣)

【问题讨论】:

  • 请使用反引号`来格式化问题中的代码,以防止 SO markdown 格式化程序干扰 HTML/XML 实体。例如,&amp;amp;。现在这个问题有相当多的模棱两可和混乱。
  • 啊,谢谢,我做了相应的修改。

标签: jsf internationalization


【解决方案1】:

编辑 - 对已澄清问题的回答

第一个显然是内联的,所以解释器知道这是安全的。
第二个来自外部源(您正在使用表达式语言),因此不安全,需要转义。转义的结果会和你写的一样,基本上它会告诉你 HTML 实体的确切值。
这与安全有关(例如 XSS),而不是 i18n。

之前的尝试

我不太清楚你在问什么,但我相信它是“如何显示它?”。

大多数标准 JSF 控件都包含转义属性,如果设置为 false,则不会转义文本。不幸的是,您似乎正在使用像 SeamT​​ools 这样没有此属性的东西。

好吧,在这种情况下,没有什么可做的。除非您可以使用标准控件,否则您应该尝试将属性文件实际保存为 Unicode(实际上是 UTF-16 BigEndian)并简单地放置有效的 Unicode 不间断空格字符。理论上应该可行;最新版本的 Java 支持 Unicode 编码的属性文件(虽然我不记得是 Java SE 5 还是 Java SE 6)...

【讨论】:

  • 不,问题是为什么第一行中的值转换为&amp;nbsp;,而秒数转换为&amp;amp;#160;。我认为它应该有相同的结果。 (修改了上面的问题)
猜你喜欢
  • 2011-03-06
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多