【问题标题】:Apache Wicket - Adding HTML to feedback panelApache Wicket - 将 HTML 添加到反馈面板
【发布时间】:2012-10-30 20:08:38
【问题描述】:

有没有办法将自定义 HTML 添加到反馈面板?

就像这样,FeedbackPanel 为每条添加的消息创建的不是只将<span> 元素添加到<li>,而是添加<div><button><span>

所以我正在寻找类似validationErrorFeedback.error(message); 的内容,其中消息将是我的 HTML。这可能吗?

【问题讨论】:

    标签: java html apache custom-controls wicket


    【解决方案1】:

    您可以继承FeedbackPanel,从而提供您自己的标记。只需复制 FeedbackPanel.html 并根据需要编辑标记(组件层次结构必须仍然相同)。

    【讨论】:

      【解决方案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>
      

      【讨论】:

      • 感谢您对 XSS 的见解。我会走安全的道路,按照莱特所说的去做。也感谢您的标记。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      相关资源
      最近更新 更多