2017-10-04 125 views
0

因此,如果我有一個listview中的每個項目有一個不同的鏈接基於在AjaxLink onClick中執行的邏輯,我將如何動態添加檢票:每個鏈接?如何動態地添加Ajax鏈接到列表視圖

例如:

item.addOrReplace(new ListView<String> ("listViewID" listViewIDs){ 
    AjaxLink openLinktoPage = new AjaxLink("dynamicAjaxLinkId"){ 
    @Override public void onClick(AjaxRequestTarget target){ 
     String url = generateUrlBasedOnDynamicLinkImplementationNotImportant(listViewIDs.getModelObject()); 
     useUrlToOpenWindowImplementationNotImportant(url); 
    } 
    } 
} 

與加上標記的HTML是這樣的...

<tr wicket:id="listViewIDs"> 
    <td> 
     <a href="not important">Some Link Text Here</a> 
    </td> 
</tr> 

看起來像我將不得不在代碼中動態生成HTML和其追加到html標記。不知道如何做到這一點。

回答

1

無需生成HTML。這是Wicket中繼器的非常標準的用例。

item.addOrReplace(new ListView<String> ("listView", listViewIDs) { 
    @Override protected void populateItem(final ListItem<String> item) { 
    AjaxLink openLinktoPage = new AjaxLink("link"){ 
     @Override public void onClick(AjaxRequestTarget target){ 
     // do something that uses item.getModelObject() 
     // the name "openLinkToPage" makes me think you may need BookmarkablePageLink instead 
     } 
    } 
    item.add(openLinktoPage); 
    } 
} 

而且標記:

<tr wicket:id="listView"> 
    <td> 
     <a wicket:id="link">Some Link Text Here</a> 
    </td> 
</tr> 
+0

有意思,有意思。我想知道爲什麼我的鏈接不工作。 – SoftwareSavant

+0

你有錯誤嗎?或者鏈接不起作用?請定義「不起作用」 –

+0

我的onClick不會觸發。 – SoftwareSavant