Мне нужно создать веб-страницу с Wicket, которая выкладывает следующую таблицу:
+------------+---------+
| Category | Value |
+------------+---------+
| CatA | ValA |
+------------+---------+
| CatB | ValB |
+------------+---------+
| CatC | ValC |
+------------+---------+
| CatD | ValD |
+------------+---------+
| CatE | ValE |
+------------+---------+
Каждый элемент в этой таблице, кроме заголовков, должен быть выпадающим меню. Есть две проблемы. Во-первых, каждый список значений зависит от списка категорий. Для простоты примера, CatA может содержать «спорт», «автомобили» и «животные» в качестве опций. Затем, если выбран «спорт», ValA заполняется «бейсболом», «футболом» и «баскетболом». Но если выбрать «автомобили», ValA вместо этого будет заполнен «Volvo», «Saab» и «Mercedes».
Другая проблема заключается в том, что строки не должны появляться, если строки над ними не заполнены. Поэтому при загрузке страницы должны быть видны только CatA и ValA. После заполнения ValA, CatB и ValB становятся видимыми. Если ValB заполнен, то появляются CatC и ValC, & c.
У меня вопрос: можно ли это сделать в чистом калитке, предпочтительно асинхронно? Я просмотрел API Wicket, но я не слишком знаком с ним, поэтому я мог легко пропустить класс, который делает то, что я хочу. Моя первая мысль была связана с использованием DropDownChoice
и его onSelectionChanged()
метода, но это не похоже на AJAXified.
Если нет абсолютно никакого способа, которым это происходит только с Wicket, я бы подумал об использовании JavaScript, но это действительно последнее средство.
Мне не обязательно нужен какой-либо код - он может даже не работать, поскольку это действительно урезано от моих реальных требований к проекту - но я был бы признателен за указание на полезный класс API или существующую реализацию или тому подобное.
Edit:
Хорошо, ответ donroby отлично работал для первой части (делая значения зависящими от категорий), но я все еще теряюсь во второй части (скрывая строки, пока все предыдущие строки не будут заполнены). Сначала я думал, что это можно сделать, прикрепив LoadableDetachableModel
s, но теперь я понимаю, что это не то, что делают те. Есть ли способ указать, находится ли компонент на странице вообще?