0

レンダリングされた属性を使用して、データテーブルに「x」を表示しています。x は、その値が false であっても毎回出力されます。

                <ace:column id="aktiviert" headerText="Aktiviert" sortBy="#{user.aktiviert}" filterBy="#{user.aktiviert}">
                    <ace:cellEditor>
                        <f:facet name="output">
                            <h:outputText value="x" rendered="#{user.aktiviert}"/>
                        </f:facet>
                        <f:facet name="input">
                            <ace:checkboxButton id="aktiviertInput" value="#{user.aktiviert}" />                    
                        </f:facet>
                    </ace:cellEditor>      
                </ace:column>  

前に別の outputText を配置すると、機能します。

                        <f:facet name="output">
                            <h:outputText value="" rendered="#{user.aktiviert}"/>
                            <h:outputText value="x" rendered="#{user.aktiviert}"/>
                        </f:facet>

x は、バックエンドのブール値が true の場合にのみ表示されるようになりました。最初のアクセスでは、レンダリングされた属性は常に値が true のように機能します。

既知のバグはありますか? これは、icefaces 3.2 から 3.3 への更新以降です。

これはエンティティのゲッターです。

@Column(name = "AKTIVIERT")
public Boolean getAktiviert() {
    System.out.println("Aktiviert : " + aktiviert);
    if (aktiviert == null) {
        return false;
    } else {
        return aktiviert;
    }
}
4

1 に答える 1

0

ajax 経由でプロパティを変更する場合は、ace:dataTable で「alwaysExecuteContents」を使用する必要があります。簡単なテストを行ったところ、この属性を「true」に設定すると、ファセットのレンダリング フラグが適切に更新されることがわかりました。

于 2014-01-06T21:11:30.120 に答える