Apache Wicket - 将HTML添加到反馈面板

时间:2012-10-30 20:08:38

标签: java html apache custom-controls wicket

有没有办法将自定义HTML添加到FeedbackPanel?

与此相反,我不想仅为<span>添加<li>元素,而是为每个添加的邮件创建的<div>,我想添加<button> <span> }和validationErrorFeedback.error(message);

所以我正在寻找类似{{1}}的内容,其中的消息将是我的HTML。这可能吗?

2 个答案:

答案 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>