0

我正在使用 primefacesselectoneradio控件,它将显示或隐藏panelgrid之后的选择。但不知道为什么它不能panelgrid在选择 allTeachers 广播时隐藏它。

public boolean getVisibleTeacherList() {
    if (this.selectedAllTeachersFlag == "AllTeachers")
        return false;
    else 
        return true;
}

<p:panelGrid columns="2">
    <p:selectOneRadio id="console" value="#{chkTeacherList.selectedAllTeachersFlag}">
        <f:selectItem itemLabel="All teachers" itemValue="AllTeachers" />
        <f:selectItem itemLabel="Selected teachers" itemValue="SelectedTeachers" />
        <p:ajax update="panelGrid1a1" />
    </p:selectOneRadio>
</p:panelGrid>
<p:panelGrid id="panelGrid1a1" rendered="#{chkTeacherList.getVisibleTeacherList()}" columns="1" styleClass="ui-edb-noneborder-grid">
    <p:separator style="border: 1px solid #8c4eea;" />
    <p:panelGrid id="panelGrid1"  columns="3" styleClass="ui-edb-noneborder-grid">
        <p:selectManyCheckbox layout="grid" id="gridTeacherName"  value="#{chkTeacherList.selectedValue}" 
                             columns="3">
            <f:selectItems value="#{chkTeacherList.filterTeacherNameList}" var="teacher" itemLabel="#{teacher.teacherEngName}" itemValue="#{teacher.timRefNo}" />
        </p:selectManyCheckbox>
    </p:panelGrid>
    <p:separator style="border: 1px solid #8c4eea;" />
</p:panelGrid>
4

3 回答 3

0

要添加或删除组件(当它更改其rendered值时),您需要更新的不是组件本身,而是其祖先组件之一。

例如,假设您panelGrid1a1位于内部parentPanel

<p:outputPanel id="parentPanel">
    <p:panelGrid id="panelGrid1a1" rendered="#{chkTeacherList.getVisibleTeacherList()}" ...
    ...
</p:outputPanel>

然后你p:selectOneRadiop:ajax应该更新parentPanel

<p:selectOneRadio id="console" ...
    ...
    <p:ajax update="parentPanel" />
</p:selectOneRadio>
于 2015-07-21T15:10:57.560 回答
0

问题可能出在您的 boolean gettergetVisibleTeacherList上。应该是isVisibleTeacherList为了visibleTeacherList财产。

而且,我认为不需要这个单独的属性。您可以使用以下方法处理 panelGrid 的渲染:

rendered="#{chkTeacherList.selectedAllTeachersFlag eq 'AllTeachers'}"
于 2015-07-21T14:32:35.117 回答
0

快速修复尝试替换此:

this.selectedAllTeachersFlag == "AllTeachers"

this.selectedAllTeachersFlag.equals("AllTeachers")

区别

  • “==”是一个引用比较,即两个对象都指向同一个内存位置。在哪里
  • “equals()”计算对象中值的比较。
于 2015-07-22T10:56:47.547 回答