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 должны использовать одну и ту же модель, чтобы показывать один и тот же текст.