0
私は、ByteArrayResource、ResourceLinkをByteArrayResourceに含むPanelと、リソースへの相対URLを表示するLabelを持っています。 Iラベルはlink.urlFor(IResourceListener.INTERFACE)
を使用してその値を取得します。ページに2つのパネルを作成し、リンクを使用してそれらのパネルを交換すると、最初に追加されたパネルのラベルのみが正しいURLを表示します。Wicket:パネル内に正しいリソースURLを取得できません
Label from the first panel: ../wicket/page?0-IResourceListener-a_panel-lnk
Label from the second panel: page?1-IResourceListener-a_panel-lnk
あなたは第二パネルがURLの「../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)));
}
これは私が自分のページにパネルを追加する方法である、とのパネルを交換するためのリンク:2番目のURLはに対して計算され
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;
}
});
私はその部分を持っていると思いますが、ResourceLinkは両方のパネルに正しい相対URLを持つリンクを生成します。このURLをラベルに表示するにはどうすればよいですか? – Holm