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

Я хотел бы динамически изменить текст, отображаемый для тега привязки 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, "[-]");
                }

1 Ответ

5 голосов
/ 13 июля 2011

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

...