Wicket:创建数据表中行的动态锚链接

时间:2017-01-24 12:11:08

标签: java html dynamic hyperlink wicket

我需要创建一个动态链接到数据表中行的锚链接。

我按照这个例子开始使用(已排序的)数据表

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);
    }
}

我无法将动态链接与数据表中的项目相关联 - 您能帮忙吗?

1 个答案:

答案 0 :(得分:1)

目前,您向Link添加了RepeatingView。我认为你需要添加一个Panel。此面板将拥有自己的LabelLink以及您需要的其他任何内容。

如果您不想使用新的Panel,那么您可以使用WebMarkupContainer并将标记保留在FooPanel.html中。