是否有將自定義HTML添加到FeedbackPanel的方法?Apache Wicket - 將HTML添加到反饋面板
如,而不是僅在<span>
元件增加了<li>
的FeedbackPanel會爲每個增加的消息,我想添加一個<div>
與<button>
和<span>
。
所以我正在尋找像validationErrorFeedback.error(message);
這樣的消息將是我的HTML。這可能嗎?
是否有將自定義HTML添加到FeedbackPanel的方法?Apache Wicket - 將HTML添加到反饋面板
如,而不是僅在<span>
元件增加了<li>
的FeedbackPanel會爲每個增加的消息,我想添加一個<div>
與<button>
和<span>
。
所以我正在尋找像validationErrorFeedback.error(message);
這樣的消息將是我的HTML。這可能嗎?
您可以子類FeedbackPanel
,因此提供您自己的標記。只需複製FeedbackPanel.html
並根據需要編輯標記(組件層次結構必須仍然相同)。
最簡單的尋找方法是調用
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>
感謝您的XSS洞察力。正如萊特所說,我會採取安全的道路。感謝您的標記。 –