0

selectoneradio選択後に表示または非表示にするprimefacesコントロールを使用してい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場合)、コンポーネント自体ではなく、その祖先コンポーネントの 1 つを更新する必要があります。

たとえば、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 getter にある可能性がありますgetVisibleTeacherList。それは財産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 に答える