我有一个包含ByteArrayResource的Panel,一个包含ByteArrayResource的ResourceLink和一个应该显示资源相对URL的Label。 I标签使用link.urlFor(IResourceListener.INTERFACE)
获取其值。当我在页面上创建两个面板并使用链接在它们之间进行交换时,只有首先添加的面板中的标签才会显示正确的URL。
Label from the first panel: ../wicket/page?0-IResourceListener-a_panel-lnk
Label from the second panel: page?1-IResourceListener-a_panel-lnk
正如您所看到的,第二个面板缺少网址的“../wicket/”部分,为什么会发生这种情况,我该如何解决?
我的面板onInitialize:
@Override
protected void onInitialize() {
super.onInitialize();
csv = new ByteArrayResource("text/csv") {
//Generate the CSV
//...
};
//Create a link to the CSV resource
ResourceLink<Void> link = new ResourceLink<Void>("lnk", csv);
add(link);
//Display the URL to the resource
add(new Label("lbl", (String)link.urlFor(IResourceListener.INTERFACE)));
}
这是我将面板添加到页面的方式,以及替换面板的链接:
aPanel = new APanel("a_panel", resultsModel, false);
add(aPanel);
// Swap the panel
add(new Link<Void>("swap") {
private static final long serialVersionUID = 1L;
private Panel alt = new GraphPanel("a_panel", resultsModel, true);
@Override
public void onClick() {
Panel tmp = aPanel;
aPanel.replaceWith(alt);
aPanel = alt;
alt = tmp;
}
});
答案 0 :(得分:1)
第二个网址是针对当前显示的网页计算的,因此其相对网址与“/ home”产生的网址不同。