有没有办法将自定义 HTML 添加到反馈面板?
如中所示,我不想只将<span>
元素添加到为每个添加的消息创建的 FeedbackPanel,而是添加a和.<li>
<div>
<button>
<span>
所以我正在寻找类似于validationErrorFeedback.error(message);
我的 HTML 的消息。这可能吗?
有没有办法将自定义 HTML 添加到反馈面板?
如中所示,我不想只将<span>
元素添加到为每个添加的消息创建的 FeedbackPanel,而是添加a和.<li>
<div>
<button>
<span>
所以我正在寻找类似于validationErrorFeedback.error(message);
我的 HTML 的消息。这可能吗?
您可以子类化FeedbackPanel
并因此提供您自己的标记。只需根据需要复制FeedbackPanel.html
和编辑标记(组件层次结构必须仍然相同)。
最简单的查找方法是调用
feedbackPanel#setEscapeModelStrings(false)
但是如果你这样做,如果你有任何显示输入的验证器,你的应用程序很容易受到跨站点脚本攻击。例如,如果您有一个使用 EmailAddressValidator 的文本字段并且用户输入“Joe”,则验证器的错误消息将显示为:
'${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>