2

入力コンポーネントをデータ テーブルの外に配置すると、バッキング Bean が入力で更新され、検索が正常に機能し、結果がデータ テーブルに正しく表示されます。

<h:form>
<!-- ------- Calendar input component outside dataTable ------- -->
    <p:calendar id="selectHireDate" value="#{backingBean.hireDateToSearch}" />

    <p:dataTable id="employeeDataTable"
        value="#{backingBean.employeeDataModel}" var="employee">
        <p:columnGroup type="header">
            <p:row>
                <p:column>                           
                        <f:facet name="header">
                            Lorem Ipsum
                        </f:facet>                          
                </p:column>
            </p:row>
        </p:columnGroup>

        <p:column>
            <h:outputText value="#{employee.hireDate}" />
        </p:column>     
    </p:dataTable>

    <p:commandButton value="Submit"
    actionListener="#{backingBean.searchEmployees}"
    update="employeeDataTable" />
</h:form>

しかし、その入力コンポーネントをデータ テーブルのヘッダーに配置すると、突然バッキング Bean が更新されなくなります。(backingBean.setHireDateToSearch にブレークポイントを配置しましたが、これは上記のコードではトリップしますが、以下のコードではトリップしません。)

<h:form>            
    <p:dataTable id="employeeDataTable"
        value="#{backingBean.employeeDataModel}" var="employee">
        <p:columnGroup type="header">
            <p:row>
                <p:column>                           
                        <f:facet name="header">
<!-- ------- Calendar input component inside dataTable ------- -->
                            <p:calendar id="selectHireDate" value="#{backingBean.hireDateToSearch}" />
                        </f:facet>                          
                </p:column>
            </p:row>
        </p:columnGroup>

        <p:column>
            <h:outputText value="#{employee.hireDate}" />
        </p:column>     
    </p:dataTable>

    <p:commandButton value="Submit"
    actionListener="#{backingBean.searchEmployees}"
    update="employeeDataTable" />
</h:form>

どうしてこれなの?後者のセットアップを機能させる方法はありますか?

4

1 に答える 1

2

私はあなたの問題を再現することができます.とにかく、この構造ではそれ自体ではあまり意味<p:columnGroup><f:facet name="header">ありません.

<p:dataTable id="employeeDataTable" value="#{backingBean.employeeDataModel}" var="employee">
    <f:facet name="header">
        <p:calendar id="selectHireDate" value="#{backingBean.hireDateToSearch}" />
    </f:facet>                          
    <p:column>
        <h:outputText value="#{employee.hireDate}" />
    </p:column>     
</p:dataTable>

<p:column>(これは、空のヘッダーの 2 番目の小さな行を表示するだけです。小さな CSS で非表示にすることができます)

これが設計によるものなのか、または にdecode()関連付けられたメソッドのどこかにあるバグによるものなのかは不明です<p:dataTable>。念のため、PrimeFaces の担当者に報告します。

于 2012-08-06T17:40:11.400 に答える