Wicket: создайте элемент управления, который переключается между TextBox и Label.

У меня есть панель, которая имеет состояние редактирования и состояние просмотра. Мне нужен элемент управления, который переключается между TextField и Label в зависимости от состояния панели. Например, в состоянии редактирования панель будет отображаться как текстовое поле, а то же поле будет отображаться как метка в состоянии просмотра.

Это очень похоже на AjaxEditableLabel, но это не то же самое. Я изменяю несколько ярлыков в моей форме на TextFields одновременно.

В дополнение к обмену элементами управления, я хотел бы продолжать использовать в своих интересах wicket:for, Вот предложенный пример разметки:

<label wicket:for="firstNm"><wicket:message key="firstNm" /></label><br />
<span wicket:id="firstNm"></span>

Я хотел бы иметь возможность продолжать добавлять атрибуты HTML в TextField. Можно было бы скопировать их из тега span в onComponentTag. Например:

<span wicket:id="firstNm" maxlength="30"></span>

... может отобразить следующее в режиме редактирования:

<input type="text" maxlength="30" />

Я также посмотрел на элемент управления ViewOrEdit в visural-wicket, но не думаю, что он будет работать с wicket:for.

1 ответ

Решение

Вы можете сделать это с помощью контейнера Wicket Fragment. Определите два фрагмента в разметке для input и span соответственно. В коде Java добавьте Fragment с другим вторым параметром в зависимости от ваших условий. TextField и Label должны использовать одну и ту же модель, чтобы показывать один и тот же текст.

Другие вопросы по тегам