簡體   English   中英

渲染的JSF不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM