У меня есть что-то подобное на моей веб-странице, меню выбора / выпадающего меню.Это раскрывающееся меню должно создать другое раскрывающееся меню на основе выбранного элемента.Я делаю это по телефону <f:ajax event="change"..listener=..>
Но это не так, как я ожидал.При выборе пункта в раскрывающемся меню вызвать слушателя в теге ajax, изменения * не влияют на свойство rendered
следующих раскрывающихся таблиц.И значение для rendered
успешно изменилось с ложного на истинное.Это заставило меня задуматься, что не так на моей странице jsf.
Вот xhtml '
<h:selectOneMenu value="#{teacher.viewCategory}">
<f:selectItem itemValue="0" itemLabel="Tahun" />
<f:selectItem itemValue="1" itemLabel="Mata Pelajaran" />
<f:ajax event="change" render="divYearSelection divCourseSelection"
listener="#{teacher.enableViewCategory}"/>
</h:selectOneMenu>
<h:panelGroup id="divYearSelection" layout="block" rendered="#{teacher.showViewYearSelection}">
<h:outputText value="YEAR"/>
</h:panelGroup>
<h:panelGroup id="divCourseSelection" layout="block" rendered="#{teacher.showViewCourseSelection}">
<h:outputText value="COURSE"/>
</h:panelGroup>
<h:commandButton value="#{msg.tcr_form_submit_view}" action="#{teacher.viewTeacher}"/>
</h:panelGrid>
</h:form>'
, и это функция bean-компонента, поддерживающая ajax
public void enableViewCategory(AjaxBehaviorEvent e) {
if (this.getViewCategory().equals("0")) {
this.setShowViewYearSelection(true);
} else {
this.setShowViewCourseSelection(true);
}
}
При отладке функция работает нормально.