Я хочу отобразить структуру, подобную дереву, в моем раскрывающемся списке в JSF. В основном элементы выбора находятся в иерархии, и я хотел бы, чтобы это было очевидно в раскрывающемся списке.
Возможно ли это?
Я хочу отобразить структуру, подобную дереву, в моем раскрывающемся списке в JSF. В основном элементы выбора находятся в иерархии, и я хотел бы, чтобы это было очевидно в раскрывающемся списке.
Возможно ли это?
Итак, вы в основном хотите HTML <optgroup>
? Используйте SelectItemGroup
.
JSF bean (я предполагаю, что JSF 1.x):
private String option; // +getter +setter
private List<SelectItem> options; // +getter
public Bean() {
options = new ArrayList<SelectItem>();
SelectItemGroup group1 = new SelectItemGroup("Group 1");
group1.setSelectItems(new SelectItem[] {
new SelectItem("Group 1 Value 1", "Group 1 Label 1"),
new SelectItem("Group 1 Value 2", "Group 1 Label 2"),
new SelectItem("Group 1 Value 3", "Group 1 Label 3")
});
options.add(group1);
SelectItemGroup group2 = new SelectItemGroup("Group 2");
group2.setSelectItems(new SelectItem[] {
new SelectItem("Group 2 Value 1", "Group 2 Label 1"),
new SelectItem("Group 2 Value 2", "Group 2 Label 2"),
new SelectItem("Group 2 Value 3", "Group 2 Label 3")
});
options.add(group2);
}
Вид JSF:
<h:selectOneMenu value="#{bean.option}">
<f:selectItems value="#{bean.options}" />
</h:selectOneMenu>
Сгенерированный пример HTML:
<select name="j_idt6:j_idt7" size="1">
<optgroup label="Group 1">
<option value="Group 1 Value 1">Group 1 Label 1</option>
<option value="Group 1 Value 2">Group 1 Label 2</option>
<option value="Group 1 Value 3">Group 1 Label 3</option>
</optgroup>
<optgroup label="Group 2">
<option value="Group 2 Value 1">Group 2 Label 1</option>
<option value="Group 2 Value 2">Group 2 Label 2</option>
<option value="Group 2 Value 3">Group 2 Label 3</option>
</optgroup>
</select>
Как это выглядит в браузере:
Я не уверен, что понимаю, о чем вы спрашиваете. Предполагаете, вы хотите, чтобы подкатегории в меню были слегка отступом?
Если это так, как насчет отправки с серверной стороны/обработчика массива элементов, уже обработанных "& nbsp" (пробел) или с помощью "-".
Другими словами, вы не можете использовать javascript для анализа и понимания иерархии категорий. У вас есть 2 варианта: либо запустить рекурсию через JSF (звучит сложнее и уродливо для пользователя пользовательского интерфейса, который должен спроектировать страницу), либо выполнить сортировку на стороне сервера, предоставив JSF прописные записи с отступом.
Надеюсь, что это поможет,
Ишай
Но вложенные группы не отображаются правильно. Они отображаются как элемент не как группа.