是否有任何解决方案可用于构建包含内部带有链接消息的反馈面板?我试着用这个:
StringBuilder stringBuilder= new StringBuilder(512);
stringBuilder.append("<a href=\"");
stringBuilder.append(Utils.getAbsoluteUrl(EditBookingSourcePage.class, new PageParameters())+"");
stringBuilder.append("\">Clicca Qui!</a>");
feedbackErrorPanel.info(stringBuilder);
public static <C extends Page> String getAbsoluteUrl(final Class<C> pageClass, final PageParameters parameters) {
CharSequence resetUrl = RequestCycle.get().urlFor(pageClass, parameters);
String abs = RequestUtils.toAbsolutePath("/", resetUrl.toString());
final Url url = Url.parse(abs);
return RequestCycle.get().getUrlRenderer().renderFullUrl(url);
}
但不起作用。
答案 0 :(得分:1)
您需要致电feedbackPanel.setEscapeModelStrings(false)
。
如果没有这个,Wicket将逃避所有HTML字符以防止XSS攻击。
答案 1 :(得分:0)
正如@ martin-g首先提到的,你应该逃避html标签。 LD R0, VALUE1
正如你提到的那样。我相信网址构建问题。所以无论你在下面的步骤中做了什么。我试过以下解决方案,它对我有用。
feedbackPanel.setEscapeModelStrings(false)
在WicketApplication页面
//since you are not passing any parameter we can send null
String absoluteUrl = RequestCycle.get().getUrlRenderer().renderFullUrl(
Url.parse(urlFor(EditBookingSourcePage.class, null).toString()));
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<a href=");
stringBuilder.append(absoluteUrl);
stringBuilder.append("\">Clicca Qui!</a>");
feedbackErrorPanel.info(stringBuilder);
答案 2 :(得分:0)
另一个应用是:
1,扩展org.apache.wicket.markup.html.panel.FeedbackPanel
2,扩展org.apache.wicket.feedback.FeedbackMessage并存储数据
3,使用自己的标记,模型对象
创建MyMessagePanel4,覆盖扩展FeedbackPanel中的newMessageDisplayComponent方法
@Override
protected Component newMessageDisplayComponent(String id, FeedbackMessage message) {
//message with its own markup
if (message.getClass().equals(MyMessage.class)) {
MyMessage msg = (MyMessage) message;
return new MyMessagePanel(id, Model.of(new MyMessagePanelModelObject(msg.getModelObject()))); //my message markup
}
return super.newMessageDisplayComponent(id, message); //other messages
}