SelectOneRadio选择后不隐藏面板网格



我使用的是primefaces selectoneradio控件,它将在选择后显示或隐藏panelgrid。但是不知道为什么它不能隐藏这个panelgrid当选择所有教师广播。

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>

问题可能与您的布尔getter getVisibleTeacherList有关。visibleTeacherList属性应该是isVisibleTeacherList

总之,我认为这个单独的属性是不必要的。你可以使用以下命令处理panelGrid的渲染:

rendered="#{chkTeacherList.selectedAllTeachersFlag eq 'AllTeachers'}"

要添加或删除组件(当它改变其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>

快速修复方法:

this.selectedAllTeachersFlag == "AllTeachers"

this.selectedAllTeachersFlag.equals("AllTeachers")
不同

  • "=="是一个引用比较,即两个对象都指向相同的内存位置。其中
  • "equals()"计算对象中值的比较。

相关内容

  • 没有找到相关文章

最新更新