我需要创建一个动态链接到数据表中行的锚链接。
我按照这个例子开始使用(已排序的)数据表
A Simple Sortable DataTable Example
" FooPanel"应该包含数据表中每一行的一个链接。
目前的代码是:
public class FooPanel extends Panel {
private static final long serialVersionUID = 1L;
private Link<String> createLink(String linkName, final String name)
{
final Link<String> l = new Link<String>(linkName) {
private static final long serialVersionUID = 1L;
@Override
public void onClick() {
}
};
l.setBody(Model.of(name));
return l;
}
public FooPanel(final String id, IModel<List<String>> model) {
super(id);
final List<String> linkList = model.getObject();
final Label myLabel = new Label("myLabel", "this is my label");
myLabel.setOutputMarkupId(true);
this.add(myLabel);
final RepeatingView view = new RepeatingView("fooPanelItems");
for (final String linkLabel:linkList)
{
final Link<String> link = createLink(view.newChildId(), String.format("[ %s ]", linkLabel));
link.setAnchor(myLabel);
link.setOutputMarkupId(true);
view.add(link);
}
this.add(view);
}
}
private class LazyFooPanel extends AjaxLazyLoadPanel
{
private static final long serialVersionUID = 1L;
final IModel<List<String>> m_model;
private LazyFooPanel(final String id, IModel<List<String>> model)
{
super(id, model);
m_model = model;
}
@Override
public Component getLazyLoadComponent(final String markupId)
{
return new FooPanel(markupId, m_model);
}
@Override
protected void onComponentLoaded(final Component component, final AjaxRequestTarget target)
{
target.add(component);
}
}
我无法将动态链接与数据表中的项目相关联 - 您能帮忙吗?
答案 0 :(得分:1)
目前,您向Link
添加了RepeatingView
。我认为你需要添加一个Panel
。此面板将拥有自己的Label
,Link
以及您需要的其他任何内容。
如果您不想使用新的Panel,那么您可以使用WebMarkupContainer并将标记保留在FooPanel.html
中。