0

他の行を追加/削除しながらテキストボックスにデータを保持したい.ネストされたデータテーブルを使用しています. 削除ボタンをクリックすると、データテーブル全体が更新されたため、ユーザーは部分的に入力されたフォーム データを失いました。

        <h:commandButton id="addBtn"  value="Add Value">
            <f:ajax listener="#{relationBean.addValue}" 
                render="datatableIterator" event="click" />
        </h:commandButton>
        <h:dataTable id="datatableIterator"
            value="#{relationBean.datatables}" var="datatable">
            <h:column>
                <h:dataTable id="relationIterator"  
                    value="#{datatable}" var="item">
            <h:column>
                <f:facet name="header"> Relation Type Name</f:facet>
                <h:outputText value="#{item.relationType}" />
            </h:column>
            <h:column>
                <f:facet name="header">language</f:facet>
                <h:outputText value="#{item.languageName}" />
            </h:column>
            <h:column>
                <f:facet name="header"> Value</f:facet>
                <h:inputText value="#{item.relationForm}" />
            </h:column>
            </h:dataTable>
    </h:column>
    <h:column>
        <p:commandLink action="#{relationBean.deleteDataTable}" 
            immediate="true" update="@form" process="@this" >
            <h:graphicImage value="../images/delete.png"  />
            <f:setPropertyActionListener 
                target="#{relationBean.deleteId}" value="#{datatable}" />
                 </p:commandLink>
    </h:column>
</h:dataTable>
4

1 に答える 1

0

私は解決策を得ました。たった1行の変更です。フォームにデータを入力する前にデータを追加していたので、削除ボタンをクリックするとフォームがクリアされます。このようにフォームに入力した後、データを追加しました。

getDatatables().add(getRelationDTOList());

そうなる前に

datatables.add(getRelationDTOList());

xhtml追加ボタンにexecute="@form"を含めました。

于 2013-09-18T11:27:22.467 に答える