2012-08-04 88 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