2013-09-04 6 views
5

Мое требование такое. У меня есть selectMenu с некоторыми значениями (примеры: Engineering, Medicine, Law и т. Д.). Предположим, если в раскрывающемся списке выберем «Инженер», я хочу, чтобы новое раскрывающееся меню создавалось динамически, у которого есть значения, связанные с «Инженерством» (например, «Электроника», «Компьютеры, электрооборудование и т. Д.»). Как добиться этого в JSF 2.0?Добавление динамических выпадающих компонентов в JSF

+0

Проверьте наш '[selectonemenu]' вики-страницу для более подсказок, как получить большинство из этих компонентов: HTTP: // stackoverflow.com/tags/selectonemenu/info (вы можете получить к нему доступ, наведя тэг '[selectonemenu]', который я разместил ниже вашего вопроса, пока не появится черный ящик, а затем нажмите на ссылку * info *. – BalusC

ответ

6

Вам необходимо выполнить запрос ajax при первом изменении выбора h:selectOneMenu. Этот запрос обновит выбранные позиции во втором h:selectOneMenu. После запроса ajax вы должны снова отобразить второй h:selectOneMenu с обновленными значениями.

Страница:

<h:selectOneMenu value="#{bean.selectedSubject}"> 
    <f:ajax listener="#{bean.changeSubject}" render="speciality_selection" /> 
    <f:selectItems value="#{bean.subject}" /> 
</h:selectOneMenu> 

<h:selectOneMenu id="speciality_selection" value="#{bean.selectedSpeciality}"> 
    <f:selectItems value="#{bean.subjectSpecialities}" /> 
</h:selectOneMenu> 

Управляемый боб:

public void changeSubject(){ 
    //Loads the specialities depending on the selected subject 
    subjectSpecialities = loadSpecialitiesForSubject(selectedSubject); 
} 
Смежные вопросы