Я решил эту проблему, используя компоненты Select
и SelectOptions
из wicket-extensions , как упомянуто martin-g.
SelectOptions<Produce> fruitOptions = new SelectOptions<Produce>(
"fruits",
fruitCollection,
new FruitRenderer());
SelectOptions<Produce> vegetableOptions = new SelectOptions<Produce>(
"vegetables",
vegetableCollection,
new VegetableRenderer());
Select select = new Select("produceSelect",
new PropertyModel<Produce>(model, "favProduce"));
select.add(fruitOptions);
select.add(vegetableOptions);
Соответствующий HTML выглядит примерно так:
<select wicket:id="produceSelect" id="produceSelect">
<optgroup label="Fruits">
<wicket:container wicket:id="fruits">
<option wicket:id="option">Apple</option>
</wicket:container>
</optgroup>
<optgroup label="Vegetables">
<wicket:container wicket:id="vegetables">
<option wicket:id="option">Carrot</option>
</wicket:container>
</optgroup>
</select>
Это дает немного другой, но лучший конечный результат, поскольку метки optgroup
выделены жирным шрифтом и не могут быть выбраны:
+----------------+-+
| **Fruits** |▼|
| Apple +-+
| Orange |
| **Vegetables** |
| Carrot |
| Cucumber |
+----------------+