Добавление динамических раскрывающихся компонентов в JSF

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


person Bharath Bhandarkar    schedule 04.09.2013    source источник
comment
Посетите нашу [selectonemenu] вики-страницу, чтобы узнать больше о том, как получить большинство этих компонентов: stackoverflow.com/tags/selectonemenu/info ( вы можете получить к нему доступ, наведя курсор на тег [selectonemenu], который я разместил под вашим вопросом, пока не появится черный ящик, а затем щелкнув ссылку info).   -  person BalusC    schedule 04.09.2013


Ответы (1)


Вам нужно выполнить запрос 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);
}
person Xtreme Biker    schedule 04.09.2013