我想在添加/删除其他行时将数据保留在文本框中。我正在使用嵌套数据表。如果我单击删除按钮,它会刷新整个数据表,因此用户丢失了部分填写的表单数据。
<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>
我得到了解决方案。它只更改了一行。我在做什么,我在填充表单之前添加了 datata,所以每当我单击删除按钮时,它都会清除表单。所以我在像这样填充表单后添加了数据。
getDatatables().add(getRelationDTOList());
之前
datatables.add(getRelationDTOList());
并在 XHTML 添加按钮中包含 execute="@form"。