2012-01-16 3 views
0

У меня есть многосегментный список, и в зависимости от того, сколько элементов пользователь будет выбирать, мне нужно показать такое же количество флажков. Я использую jsf и primefaces/spring webflow. Как я могу это сделать? Любые примеры? И я должен сделать один флажок, который позволяет проверять все сгенерированные флажки одним щелчком мыши.Создание флагов jsf

ответ

1

У меня есть 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>, который должен представлять собой «переключение выбранных элементов».

+0

Отличный ответ :) Но как я могу сделать некоторые флажки отмеченными при создании? И, во-вторых, вы помещаете туда все строки, но как мне делать, когда я использую объекты своего класса, например, автомобиль, и я хочу сохранить объекты в списке после выбора в списке. Я имею в виду, что у моего объекта должен быть метод toString или как jsf управляет этим? –

+0

1) Просто заполните 'selectedCheckboxItems'. 2) Это всего лишь базовый пример. В вашем случае просто выполните «Конвертер». – BalusC

+0

Говоря о последней вещи в моем вопросе, должен ли я после проверки правильного флажка установить все элементы в selectedCheckboxItems и rerender ? –

Смежные вопросы