Jsf 2 添加/删除新行时在文本框中保留数据
添加/删除其他行时,我想在文本框中保留数据。我使用的是嵌套数据表。若我单击delete按钮,它会刷新整个datatable,所以用户丢失了部分填充的表单数据Jsf 2 添加/删除新行时在文本框中保留数据,jsf-2,Jsf 2,添加/删除其他行时,我想在文本框中保留数据。我使用的是嵌套数据表。若我单击delete按钮,它会刷新整个datatable,所以用户丢失了部分填充的表单数据 <h:commandButton id="addBtn" value="Add Value"> <f:ajax listener="#{relationBean.addValue}" render="datatableIterator" event
<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>
关系类型名称
语言
价值
我得到了解决方案。
这只是一行更改。我所做的是在填充表单之前添加数据,因此每当我单击“删除”按钮时,它都会清除表单。所以我在像这样填充表单之后添加了数据
getDatatables().add(getRelationDTOList());
在那之前
datatables.add(getRelationDTOList());
并在xhtml添加按钮中包含execute=“@form”。这样,您只处理
commandLink
组件,但重新提交整个表单。没有表数据被发送到托管bean,当您更新它时,您已经丢失了当前的输入。我认为您想要的是处理表(保留其值)并更新表本身。不知道父表id是什么,但是process=“tableId”update=“tableId”
应该完成这项工作。代码更改与此无关execute=“@form”
成功了;-)