防止在outputLink中转义标题属性

时间:2017-01-19 12:12:44

标签: java html jsf escaping

我的客户很激动我使用链接的title属性来放置包含注册商标符号“®”的署名。我修改代码的能力非常有限,这基本上让我有两个选择,通过转义序列& reg;并且不要转义输出,或者传递符号本身并让JSF处理转义序列。我更喜欢前者,并尝试了几种变体,并且完全无法阻止序列的转移,所以我总是以& reg;在标题中。

<h:outputLink 
    value="#{url}"
    title="#{stringContainingEscapeSequence}"
    escape="false"
>
    <h:outputText value="#{myLinkText}" />
</h:outputLink>

<h:outputLink 
    value="#{url}"
>
    <f:attribute name="title" value="#{stringContainingEscapeSequence}" escape="false"/>
    <h:outputText value="#{myLinkText}" />
</h:outputLink>

上述任何一项都没有将未转义的值传递给页面,当我以原始格式插入®符号时,我最终得到的是“À”而不是符号。

TL; DR:有谁知道如何阻止JSF自动标记title属性的值?我在后端知道java,但我不使用JSF。

1 个答案:

答案 0 :(得分:1)

  

...当我以原始形式插入®符号时,我最终会使用“À®”而不是符号。

这听起来像是一个字符集不匹配;例如原始字节用一种字符编码表示,但浏览器认为应该使用不同的字符编码。

如果您无法找到防止自动转移的方法,请尝试修复字符编码不匹配。