检票口 + jsTree,ajax 响应中的链接生成

发布于 2024-09-16 12:06:41 字数 656 浏览 7 评论 0原文

我正在使用 jsTree jQuery 插件来绘制一棵树。 当用户单击节点时,包含节点 ID 的 ajax 请求将发送到服务器。

在我的回复中,我生成了这样的 html 片段(这是在单独的 servlet 中完成的):

<li id="node_id_1"><a href="foobar">Child item 1</a></li>
<li id="node_id_2"><a href="foobar">Child item 2</a></li>
<li id="node_id_3"><a href="foobar">Child item 3</a></li>
<li id="node_id_4"><a href="foobar">Child item 4</a></li>
<li id="node_id_5"><a href="foobar">Child item 5</a></li>

并且此项目绘制在所选节点下。

问题是:我应该使用 href 属性的什么值来引用 wicket 页面?即我需要指向带有一些参数的 MainPage 类的链接。

I'm using jsTree jQuery plugin for drawing a tree.
When user clicks a node, an ajax request containing node's id is send to server.

In my response I generating such piece of html (this is done in separate servlet):

<li id="node_id_1"><a href="foobar">Child item 1</a></li>
<li id="node_id_2"><a href="foobar">Child item 2</a></li>
<li id="node_id_3"><a href="foobar">Child item 3</a></li>
<li id="node_id_4"><a href="foobar">Child item 4</a></li>
<li id="node_id_5"><a href="foobar">Child item 5</a></li>

And this items are drawn under the selected node.

The question is: what value should I use for href attribute for referring wicket pages? I.e. I need links pointing to class MainPage with some parameters.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

赴月观长安 2024-09-23 12:06:41

你想要的是 RepeatingViewListView 返回一些 BookmarkablePageLink 对象:

这是一个示例组件:

public class JsTree extends Panel{

    private static final long serialVersionUID = 1L;

    public JsTree(final String id, final IModel<List<MyDomainObject>> model){
        super(id);
        this.add(new ListView<MyDomainObject>("list", model){

            private static final long serialVersionUID = 1L;

            @Override
            protected void populateItem(final ListItem<MyDomainObject> item){
                MyDomainObject modelObject = item.getModelObject();
                final Map<String, String> params =
                    Collections.singletonMap("id", modelObject
                        .getObjectId());
                item.add(
                    new BookmarkablePageLink<Void>(
                        "link", MyPage.class,
                        new PageParameters(params)
                    ).add(new Label("label",modelObject.getName()))
                ).setOutputMarkupId(true);

            }
        });
    }
}

以及相应的 HTML:

<html>
<body>
<wicket:head></wicket:head>
<wicket:panel>
    <ul class="jsTree">
        <li wicket:id="list">
            <a href="#" wicket:id="link">
                <wicket:container wicket:id="label" />
            </a>
        </li>
    </ul>
</wicket:panel>
</body>
</html>

我使用了只有 id 和名称的 MyDomainObject 类型。显示名称,链接到 ID。基本上,您可以将任何可序列化参数添加到 BookmarkablePageLink 中,然后使用 Page.getPageParameters() 方法。

What you want is a RepeatingView or ListView that returns some BookmarkablePageLink objects:

Here is a Sample component:

public class JsTree extends Panel{

    private static final long serialVersionUID = 1L;

    public JsTree(final String id, final IModel<List<MyDomainObject>> model){
        super(id);
        this.add(new ListView<MyDomainObject>("list", model){

            private static final long serialVersionUID = 1L;

            @Override
            protected void populateItem(final ListItem<MyDomainObject> item){
                MyDomainObject modelObject = item.getModelObject();
                final Map<String, String> params =
                    Collections.singletonMap("id", modelObject
                        .getObjectId());
                item.add(
                    new BookmarkablePageLink<Void>(
                        "link", MyPage.class,
                        new PageParameters(params)
                    ).add(new Label("label",modelObject.getName()))
                ).setOutputMarkupId(true);

            }
        });
    }
}

And the corresponding HTML:

<html>
<body>
<wicket:head></wicket:head>
<wicket:panel>
    <ul class="jsTree">
        <li wicket:id="list">
            <a href="#" wicket:id="link">
                <wicket:container wicket:id="label" />
            </a>
        </li>
    </ul>
</wicket:panel>
</body>
</html>

I've used a MyDomainObject type that just has an id and a name. The name is displayed, the id is linked to. Basically you can add any serializeable parameter to a BookmarkablePageLink and then parse the parameter from the page you link to using the Page.getPageParameters() method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文