有没有办法将自定义HTML添加到FeedbackPanel?
与此相反,我不想仅为<span>
添加<li>
元素,而是为每个添加的邮件创建的<div>
,我想添加<button>
<span>
}和validationErrorFeedback.error(message);
。
所以我正在寻找类似{{1}}的内容,其中的消息将是我的HTML。这可能吗?
答案 0 :(得分:4)
您可以继承FeedbackPanel
,从而提供自己的标记。只需复制FeedbackPanel.html
并根据需要编辑标记(尽管组件层次结构仍然必须相同)。
答案 1 :(得分:2)
最简单的方法是致电
feedbackPanel#setEscapeModelStrings(false)
但是,如果您这样做,如果您有任何显示输入的验证器,您的应用程序很容易受到跨站点脚本攻击。例如,如果您有一个使用EmailAddressValidator的文本字段并且用户输入'Joe',则验证者的错误消息将显示为:
'${input}' is not a valid email address.
哪个将返回'Joe'不是有效的电子邮件地址。但是 - 攻击者可以通过传递<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>