[英]JSF rendered is not working
我的網頁上有一個類似的東西,一個選擇/下拉菜單。 此下拉菜單應根據所選項目生成另一個下拉菜單。 我這樣做的方法是調用<f:ajax event="change"..listener=..>
但它並沒有像我預期的那樣發生。 在下拉菜單中選擇項目時,會觸發ajax標記中的偵聽器,以下下拉列表的rendered
屬性似乎不受更改的影響。 並且rendered
值從false成功更改為true。 哪位......讓我想知道我的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);
}
}
當我調試時,該功能正常工作。
如果部分渲染不起作用,一個好的起點是查看頁面的html源,因為它在瀏覽器中呈現。 只有當兩者(ajax觸發組件和目標組件)具有相同的直接父容器時,您的render="divYearSelection"
才有效。
渲染的html組件的ID通常看起來像id="formId:componentId:nestedComponentId1"
或id="formId:componentId:nestedComponentId2"
所以從component1調用的render="nestedComponentId2"
只有在兩個id都具有相同的“預告片”時才有效。
你可以嘗試使用示例中給出的完整id,從表單的id開始,或者(如果整個表單不是太大)使用render="@form"
來更新整個表單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.