2012-08-04 49 views
0

我想在我的JSF/PrimeFaces web应用程序中显示表情符号作为图像。为此,我需要用图像替换文字:)。我怎样才能做到这一点?如何用图像替换文本中的表情符号:)?

+0

不知道JSF如何工作,但如果你可以创建ServletFilter,也许你可以在那里 – 2012-08-04 20:22:13

回答

2

JSF不为此提供任何设施。

最简单的方法是,您可以使用the available methods of the String classString实例执行操作,例如replace()

text = text.replace(":)", "<img src=\"smile.png\" />"); 

(您可能希望应用更细粒度匹配,也许正则表达式或词法分析器,以防止合法的字符序列,如” ......一个分号(或冒号:) ......” 被不正确地被替换)

然后,呈现操纵String实例与它的HTML图像JSF,你需要使用<h:outputText>escape属性设置为false禁用内置HTML - 已用于防止XSS攻击漏洞的攻击。

<h:outputText value="#{bean.text}" escape="false" /> 

这样,HTML <img>元件将由网页浏览器被字面解释,而不是被显示明文终端用户由于逸出。

但是,正如您可能已经猜到的那样,如果您未预先清理最终用户的输入,则当然可能会打开XSS attack holes。最终用户可以通过输入来做不好的事情,比如将文本添加到文本中,然后由网页浏览器进行字面解释。事先消毒最终用户的输入,可以在其他Jsoup使用它提供此一clean()方法:(!更换笑脸之前做到这一点,也可能剥离那些<img>标签为好)

text = Jsoup.clean(text, Whitelist.basic()); 

+0

很多人非常感谢BalusC – Rounak 2012-08-06 06:18:04

相关问题