有没有办法将定制的超文本标记语言添加到FeedbackPanel中?
与中一样,我希望添加一个具有<button>和<span>的<div>,而不是只将<span>元素添加到FeedbackPanel为每个添加的消息创建的<li>中。
所以我正在寻找像validationErrorFeedback.error(message);这样的东西,其中消息将是我的超文本标记语言。这个是可能的吗?
发布于 2012-10-31 04:59:15
您可以子类化FeedbackPanel,从而提供您自己的标记。只需复制FeedbackPanel.html并随心所欲地编辑标记(尽管组件层次结构必须保持不变)。
发布于 2012-10-31 05:28:19
最简单的查看方式是调用
feedbackPanel#setEscapeModelStrings(false)但是如果你这样做,你的应用程序很容易受到跨站点脚本攻击,如果你有任何验证器将输入显示回来。例如,如果您有一个使用EmailAddressValidator的文本字段,并且用户输入'Joe',则验证器的错误消息将显示为:
'${input}' is not a valid email address.这将返回'Joe‘不是有效的电子邮件地址。然而-攻击者可以很容易地注入一个XSS有效载荷,例如,通过传递<script>alert('xss')</script>,它不再被转义。
如果您可以保证您的验证器都不会回显此输入,请继续使用它。否则,您将需要按照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>https://stackoverflow.com/questions/13146841
复制相似问题