Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 添加/删除新行时在文本框中保留数据_Jsf 2 - Fatal编程技术网

Jsf 2 添加/删除新行时在文本框中保留数据

Jsf 2 添加/删除新行时在文本框中保留数据,jsf-2,Jsf 2,添加/删除其他行时,我想在文本框中保留数据。我使用的是嵌套数据表。若我单击delete按钮,它会刷新整个datatable,所以用户丢失了部分填充的表单数据 <h:commandButton id="addBtn" value="Add Value"> <f:ajax listener="#{relationBean.addValue}" render="datatableIterator" event

添加/删除其他行时,我想在文本框中保留数据。我使用的是嵌套数据表。若我单击delete按钮,它会刷新整个datatable,所以用户丢失了部分填充的表单数据

        <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”
成功了;-)