2011-11-10 48 views
0

我有一個面板包含一個ByteArrayResource,ResourceLink指向ByteArrayResource,一個標籤應該顯示相對於資源的URL。我標籤使用link.urlFor(IResourceListener.INTERFACE)獲得它的價值。當我在頁面上創建兩個面板並使用鏈接在它們之間進行交換時,只有首先添加的面板中的標籤纔會顯示正確的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))); 
    } 

這是我如何添加面板到我的網頁,並更換面板的鏈接:

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對計算當前顯示的頁面,因此它的相對url看起來與針對'/ home'生成的頁面不同。

+0

好吧我想我已經得到了這個部分,但ResourceLink在兩個面板上都生成了正確的相對URL鏈接。我需要做什麼才能在標籤中顯示此網址? – Holm