Jsf 带有分页的datatable中的输入将丢失修改后的值

Jsf 带有分页的datatable中的输入将丢失修改后的值,jsf,primefaces,Jsf,Primefaces,具有可编辑字段和分页的datatable在分页时不会更新控制器中修改的值 控制器具有Omnifaces的ViewScope范围 当我更改表格的页面时,输入的值不会保存在模型中,在执行sumbit时,只发送当前页面的值 xhtml的代码 <h:form> <p:messages autoUpdate="true"/> <p:dataTable var="obj" id="tabla" rows="6" paginator=

具有可编辑字段和分页的datatable在分页时不会更新控制器中修改的值

控制器具有Omnifaces的ViewScope范围

当我更改表格的页面时,输入的值不会保存在模型中,在执行sumbit时,只发送当前页面的值

xhtml的代码

<h:form>
   <p:messages autoUpdate="true"/>
   <p:dataTable var="obj" id="tabla"
                rows="6" paginator="true"
                value="#{pruebaController.lista}">
       <p:ajax event="page" process="tabla" update="tabla"/>
       <p:column>
           <h:outputText value="#{obj.texto}"/>
       </p:column>
       <p:column>
           <p:inputText value="#{obj.valor}"/>
       </p:column>
   </p:dataTable>
   <p:commandButton value="Guardar" update="@all" process="@all" action="#{pruebaController.guardar}"/>
</h:form>
多谢各位

版本

  • 基本面:6.0.21或6.1.4
  • 莫哈拉:2.2.14
  • 全方位:2.6.4
  • 焊接:2.4.4.4最终

之所以会发生这种情况,是因为在每个页面更改时,组件都会转到支持bean,并使用其中的值进行刷新。我遇到了完全相同的问题,只需在我想要保留数据的字段后添加一个
就可以轻松解决。这将强制该字段更新java后端中的值,避免在页面更改时丢失数据

我的情况是:

<p:column headerText="#{message['label.modeloSplitter.cor']}" rendered="#{modeloSplitterMB.entity.modelo == 'C'}">
            <h:selectOneMenu id="corFibras" value="#{item.cor}">
                <f:selectItems value="#{corMB.corSelectItems}" />
                <p:ajax event="change" />
            </h:selectOneMenu>
</p:column>

我认为这将如何解决您的问题:

<p:column>
    <p:inputText value="#{obj.valor}"/>
    <p:ajax event="change" />
</p:column>

因此,如果删除
进程=“tabla”
?“可编辑数据表”与数据表中的输入不同。。。
<p:column headerText="#{message['label.modeloSplitter.cor']}" rendered="#{modeloSplitterMB.entity.modelo == 'C'}">
            <h:selectOneMenu id="corFibras" value="#{item.cor}">
                <f:selectItems value="#{corMB.corSelectItems}" />
                <p:ajax event="change" />
            </h:selectOneMenu>
</p:column>
<p:column>
    <p:inputText value="#{obj.valor}"/>
    <p:ajax event="change" />
</p:column>