Как установить отображаемый текст для тега привязки HTML с помощью Wicket?

Я хотел бы динамически изменять текст, отображаемый для тега привязки HTML. Так, например, если в моей разметке есть следующее:

<a class="point" style="font-family:courier" wicket:id="link">[+]</a>

Я хочу заменить "[+]" на что-нибудь другое. На данный момент фрагмент кода выглядит так:

            equipmentFamilyName.add(new Link<String>("link") {

                @Override
                protected void onComponentTag(ComponentTag tag) {
                    String id = "link" + equipmentFamilyName.getModelObject();
                    tag.put("onclick", "toggle('" + collapsibleId + "','" + id + "')");
                    tag.put("id", id);
                }

            @Override
            public void onClick() {

            }
            });

Которая просто добавляет различные атрибуты. Я пробовал использовать модель, связанную с объектом Link, как это

            IModel<String> linkModel = new Model<String>("-");
            equipmentFamilyName.add(new Link<String>("link", linkModel) {
                ...

Но это не повлияло на отображаемый текст, т.е. на моей веб-странице все еще отображается '[+]'. Мы будем очень благодарны за любые предложения или примеры кода, поясняющие, как это сделать.

Изменить: следуя указателям в комментариях, я добавил метод для переопределения onComponentTagBody (). Теперь у меня есть решение для нашей текущей версии Wicket (1.4.17).

                @Override
                protected void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) {
                    replaceComponentTagBody(markupStream, openTag, "[-]");
                }

person Andrew Fielden    schedule 13.07.2011    source источник
comment
вам нужно добавить ‹span› внутри ‹a› и добавить метку к ссылке в Java.   -  person bert    schedule 13.07.2011
comment
На самом деле вам не нужен диапазон, вы также можете использовать тег ‹wicket: container›, который удаляется в режиме развертывания.   -  person biziclop    schedule 13.07.2011
comment
Кстати, если вы все равно переопределяете onComponentTag(), вам вообще не нужно использовать класс Link, и вы можете заменить тело тега текстом своей модели.   -  person biziclop    schedule 13.07.2011
comment
Я решил это, переопределив onComponentTagBody   -  person Andrew Fielden    schedule 13.07.2011


Ответы (1)


Если вы используете Wicket 1.5, это довольно просто: link.setBody (IModel). Объект модели будет использоваться как тело ссылки.

person martin-g    schedule 13.07.2011
comment
Спасибо. В настоящее время мы используем Wicket 1.4.17. - person Andrew Fielden; 13.07.2011