У меня есть многосегментный список, и в зависимости от того, сколько элементов пользователь будет выбирать, мне нужно показать такое же количество флажков. Я использую jsf и primefaces/spring webflow. Как я могу это сделать? Любые примеры? И я должен сделать один флажок, который позволяет проверять все сгенерированные флажки одним щелчком мыши.Создание флагов jsf
ответ
У меня есть MultiSelect ListBox
Таким образом, <h:selectManyListbox>
с фиксированным значением <f:selectItems>
.
<h:selectManyListbox id="listbox" value="#{bean.selectedListboxItems}">
<f:selectItems value="#{bean.availableListboxItems}" />
</h:selectManyListbox>
С чем-то вроде:
private List<String> availableListboxItems;
private List<String> selectedListboxItems;
@PostConstruct
public void init() {
availableListboxItems = new ArrayList<String>();
availableListboxItems.add("menu item 1");
availableListboxItems.add("menu item 2");
availableListboxItems.add("menu item 3");
}
и в зависимости от того, сколько элементов пользователь выберет Я должен показать такое же количество флажков
Таким образом, просто предопределите <f:selectItems>
<h:selectManyCheckbox>
на основе значения <h:selectManyListbox>
.
<h:commandButton value="Generate checkboxes">
<f:ajax execute="listbox" listener="#{bean.generateCheckboxes}" render="checkboxes" />
</h:commandButton>
<h:selectManyCheckbox id="checkboxes" value="#{bean.selectedCheckboxItems}">
<f:selectItems value="#{bean.availableCheckboxItems}" />
</h:selectManyCheckbox>
с чем-то вроде
private List<String> availableCheckboxItems;
private List<String> selectedCheckboxItems;
public void generateCheckboxes() {
availableCheckboxItems = new ArrayList<String>();
for (int i = 1; i <= selectedListboxItems.size(); i++) {
availableCheckboxItems.add("checkbox item " + i);
}
}
Я использую JSF и primefaces/пружинный WebFlow. Как я могу это сделать? Любые примеры?
Я считаю, что приведенные выше тривиальные примеры являются достаточными. Для PrimeFaces просто замените <h:xxx>
на <p:xxx>
. Я, однако, не знаю, как Spring Webflow играет в этом роль, поскольку я никогда не использовал ее.
И я должен сделать один флажок, который позволяет проверить все сгенерированные флажки с помощью одного щелчка.
Это для вас как упражнение. Подсказка: убедитесь, что availableCheckboxItems
содержит требуемые значения в зависимости от текущего значения <h:selectBooleanCheckbox>
, который должен представлять собой «переключение выбранных элементов».
Отличный ответ :) Но как я могу сделать некоторые флажки отмеченными при создании? И, во-вторых, вы помещаете туда все строки, но как мне делать, когда я использую объекты своего класса, например, автомобиль, и я хочу сохранить объекты в списке после выбора в списке. Я имею в виду, что у моего объекта должен быть метод toString или как jsf управляет этим? –
1) Просто заполните 'selectedCheckboxItems'. 2) Это всего лишь базовый пример. В вашем случае просто выполните «Конвертер». – BalusC
Говоря о последней вещи в моем вопросе, должен ли я после проверки правильного флажка установить все элементы в selectedCheckboxItems и rerender? –