2011-11-10 6 views
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; 
    } 
}); 

答えて

1

現在表示されているページで、相対URLは '/ home'に対して生成されたURLとは異なって表示されます。

+0

私はその部分を持っていると思いますが、ResourceLinkは両方のパネルに正しい相対URLを持つリンクを生成します。このURLをラベルに表示するにはどうすればよいですか? – Holm

関連する問題