Jan*_*nne 5 java wicket drop-down-menu
是否有一些明显的方法可以将分隔符添加到Wicket DropDownChoice中的选项列表中?在我的情况下,我用我的数据源中的两种类型的域对象填充选择.我想我可以去选择列表中手动添加某种虚拟域对象,但感觉非常难看.
例:
+---------+-+
| Apple |?|
| Orange +-+
| ------- |
| Carrot |
| Cucumber|
+---------+
Run Code Online (Sandbox Code Playgroud)
当前代码(没有任何分隔符)看起来像:
EntityModel model = getModel();
List<? extends Produce> foods = foodService.getAllProduce();
// getAllProduce() returns first all fruits, then all vegetables
add(new DropDownChoice<Produce>(
"produceSelect", new PropertyModel<Produce>(model, "favProduce"), foods)
);
Run Code Online (Sandbox Code Playgroud)
我最终使用了martin-g提到的wicket-extensions中的Select和SelectOptions组件来解决这个问题.
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);
Run Code Online (Sandbox Code Playgroud)
相应的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>
Run Code Online (Sandbox Code Playgroud)
这会产生一些不同但更好的最终结果,因为optgroup标签是粗体并且无法选择:
+----------------+-+
| **Fruits** |?|
| Apple +-+
| Orange |
| **Vegetables** |
| Carrot |
| Cucumber |
+----------------+
Run Code Online (Sandbox Code Playgroud)
add(new DropDownChoice<String>("choice", Arrays.asList("Apple","Orange","Carrot","Cucumber")) {
@Override
protected void appendOptionHtml(AppendingStringBuffer buffer, String choice, int index, String selected) {
super.appendOptionHtml(buffer, choice, index, selected);
if ("Orange".equals(choice)) {
buffer.append("<optgroup label='----------'></optgroup>");
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2611 次 |
| 最近记录: |