2017-10-04 124 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