2

各行にある ajax コマンドを使用して更新する必要があるデータ テーブルがあります。

<div class="authorSection">
    <h:dataTable id="author-table" var="author" value="#{authorPOCBean.getauthors()}">
        <h:column>
            <f:facet name="header">
                <h:outputText value="Org Short Name" />
            </f:facet>
            <h:outputText id="authorOrganizationShortName" value="#author.orgShortName}" />
        </h:column>
        <h:column>
            <f:facet name="header">
                <h:outputText value="Organization Name" />
            </f:facet>
            <h:outputText id="authorOrganizationName" value="#{author.orgName}" />
        </h:column>
        <h:column>                
            <f:facet name="header">
                <h:outputText value="Location" />                
            </f:facet>
            <h:outputText id="authorLocation" value="#{author.orgLocation}" />
        </h:column>
        <h:column>
            <f:facet name="header">
                <h:outputText value="author Type" />
            </f:facet>
            <h:outputText id="authorType" value="#{author.authorName}" />
        </h:column>
        <h:column>
            <h:form id="deleteauthorForm">
                <h:commandLink action="#{authorPOCBean.deleteauthor(author)}" value="Delete">                    
                    <f:ajax render=":author-table"/>
                </h:commandLink>
            </h:form>
            <h:form id="setInitialauthorForm">
                <h:commandLink action="#{authorPOCBean.makeInitialauthor(author)}" value="Make Initial"/>                
            </h:form>
        </h:column>
    </h:dataTable>
</div>

削除機能を使用すると、テーブルが変更されていないように見えるか、古いデータでレンダリングされる可能性がありますか? 呼び出されたメソッドが最初に行うことは、内部配列を変更してからデータベースのものを変更することですが、それでも古いデータを使用するように設定しました。

私のコードに明らかに問題がありますか?

以下のリンクを見て、推奨事項を試しましたが、新しい結果はありません。実際、テーブルをフォームで囲む​​と、テーブルが正しく作成されません。

JSF- <f:ajax> はデータテーブルをレンダリングできません

4

1 に答える 1

0

削除ボタンと初期化ボタンを別のフォームに配置したのに対し、DataTable コンポーネントはフォームの外に配置したことに注意してください。

テーブルの先頭から単一のフォームを開始してみてください。(つまり) テーブル コンポーネントと 2 つのボタンは同じフォーム内に配置する必要があります。

Ajaxical リフレッシュの場合は、次のように動作するはずです。

   <f:ajax render="@form"/>

他の何らかの理由で単一のフォームを使用できず、複数のフォームが必要な場合は、この質問を参照してください マルチフォームページでフォームデータを保持する方法

于 2013-03-05T03:16:11.213 に答える