2012-10-30 19 views
1

是否有將自定義HTML添加到FeedbackPanel的方法?Apache Wicket - 將HTML添加到反饋面板

如,而不是僅在<span>元件增加了<li>的FeedbackPanel會爲每個增加的消息,我想添加一個<div><button><span>

所以我正在尋找像validationErrorFeedback.error(message);這樣的消息將是我的HTML。這可能嗎?

回答

4

您可以子類FeedbackPanel,因此提供您自己的標記。只需複製FeedbackPanel.html並根據需要編輯標記(組件層次結構必須仍然相同)。

2

最簡單的尋找方法是調用

feedbackPanel#setEscapeModelStrings(false) 

但是,如果你這樣做,你的應用程序很容易受到跨站點腳本攻擊,如果你有顯示輸入回任何驗證。例如,如果您在使用EmailAddressValidator和用戶輸入「喬」的文本字段,驗證器的錯誤信息將顯示爲:

'${input}' is not a valid email address. 

將返回「喬」不是一個有效的電子郵件地址。然而,攻擊者可以通過傳遞<script>alert('xss')</script>來輕鬆注入XSS負載,例如,它不再被轉義。

如果您可以保證您的驗證器都不會回顯此輸入 - 請繼續使用它。否則,您需要像Leiter先生建議的那樣使用您自己的標記對FeedbackPanel進行子類化。在wicket 1.5.x中,這看起來像:

<html xmlns:wicket="http://wicket.apache.org"> 
<body> 
<wicket:panel> 
    <ul wicket:id="feedbackul" class="feedbackPanel"> 
    <li wicket:id="messages" class="errorlevel"> 
     <span wicket:id="message" class="errorlevel">A message</span> 
    </li> 
    </ul> 
</wicket:panel> 
</body> 
</html> 
+0

感謝您的XSS洞察力。正如萊特所說,我會採取安全的道路。感謝您的標記。 –