Wicket + jsTree, генерация ссылок в ответе ajax - PullRequest
0 голосов
/ 31 августа 2010

Я использую плагин jsTree jQuery для рисования дерева. Когда пользователь щелкает узел, на сервер отправляется ajax-запрос, содержащий идентификатор узла.

В своем ответе я создал такой фрагмент html (это делается в отдельном сервлете):

<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 для ссылки на страницы калитки? То есть Мне нужны ссылки, указывающие на класс MainPage с некоторыми параметрами.

1 Ответ

1 голос
/ 01 сентября 2010

Требуется RepeatingView или ListView , который возвращает некоторые 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>

Я использовал тип MyDomainObject, который имеет только идентификатор и имя.Имя отображается, идентификатор связан с.По сути, вы можете добавить любой сериализуемый параметр в BookmarkablePageLink, а затем проанализировать параметр со страницы, на которую вы ссылаетесь, с помощью метода Page.getPageParameters () .

...