在datatableEditor中编辑单元格后,输出文本仍显示旧的值primefaces

时间:2014-07-09 15:58:07

标签: jsf primefaces datatable

我在PrimeFaces 5.0中使用JSF 2.2。我有一个带有单元格编辑的dataTable。

当我设置editMode =" cell"时,我在对话框中有dataTable,编辑后的输出文本没有出现,但是当我把数据表编辑放在对话框外面时,当我检查数据表的元素时它是空的,但如果我将数据表编辑器放在对话框外面,那么outPut元素就不是空的

===>当我点击编辑单元格时,输入具有新值但outputext仍然具有旧值

===>所以这里是我的页面

<ui:composition  xmlns="http://www.w3.org/1999/xhtml"
            xmlns:ui="http://java.sun.com/jsf/facelets"
            xmlns:h="http://xmlns.jcp.org/jsf/html"
            xmlns:p="http://primefaces.org/ui"
            xmlns:f="http://xmlns.jcp.org/jsf/core">
   <f:view>
   <h:form id="lotRecepForm">
        <p:dataTable value="#{lotRecpBean.liste}" 
                     var="lotRecp"                        
                     id="tbl">                                                                 
            <p:column>
                <f:facet name="header">
                    <span class="nomColonneTab">Lot Réception</span>                        
                </f:facet>
                <h:outputText value="#{lotRecp.codeLotReception}"/>
            </p:column>
            <p:column>
                <f:facet name="header">
                    <span class="nomColonneTab">Entrant</span>  
                </f:facet>
                <h:outputText value="#{lotRecp.entrant.designation}"/>
            </p:column>               
            <p:column>
                <f:facet name="header">
                    <span class="nomColonneTab">Date Réception</span>  
                </f:facet>
                <h:outputText value="#{lotRecp.dateReception}">
                    <f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss" />
                </h:outputText>
            </p:column>
            <p:column>
                <f:facet name="header">
                    <span class="nomColonneTab">Quantite Livrée</span>  
                </f:facet>
                <h:outputText value="#{lotRecp.quantiteLivree}"/>
            </p:column>               
            <p:column headerText="Action"  exportable="false" styleClass="nomColonneTab">                                          
                    <p:commandButton icon="ui-icon-arrowrefresh-1-w"
                                     update=":content:modif"
                                     oncomplete="PF('w_edit').show();" styleClass="buttonAction">
                        <f:setPropertyActionListener value="#{lotRecp}" target="#{lotRecpBean.currentLotReception}" />
                    </p:commandButton>
            </p:column>                 
        </p:dataTable>
    </h:form>
     <p:dialog  id="modif" width="80%" widgetVar="w_edit" modal="true" >                    
    <p:tabView  > 
        <p:tab  title="Controle de Réception ">                  
            <h:form>
               <h:panelGrid>                      
                <p:dataTable id="data1" value="#{normeMicroEBean.listOfNorme(lotRecpBean.currentLotReception.entrant)}" 
                             var="item" editable="true" editMode="cell" >                           
                    <p:column headerText="Valeur Controle" styleClass="ui-editable-column"> 
                        <p:cellEditor>
                            <f:facet name="output"><h:outputText  value="#{item.valeurControle}" /></f:facet>
                            <f:facet name="input"><p:inputText id="modelInput" value="#{item.valeurControle}" style="width: 50%"/></f:facet>
                        </p:cellEditor>                               
                    </p:column>
                    <p:column width="15%" headerText="Testeur">
                        <p:cellEditor >
                            <f:facet name="output"><h:outputText value="#{item.testeurCR.nom}" /></f:facet>
                            <f:facet name="input">
                                <h:selectOneMenu value="#{item.testeurCR.nom}" style="width:50%">
                                    <f:selectItems value="#{personnelBean.liste}"   var="perso" itemLabel="#{perso.nom}" itemValue="#{perso}" />
                                </h:selectOneMenu>
                            </f:facet>
                        </p:cellEditor>
                    </p:column>                                                        
                </p:dataTable>
            </h:panelGrid>
         <h:form>
        </p:tab>  
      <p:tab  title="Info lot de Réception">                   
            <h:form>    
                <p:panelGrid id="idPanel">                                                                                                        
                    <p:row>
                        <p:column><p:outputLabel value="QuantiteLivree:"                   for="quantiteLivree" /></p:column>
                        <p:column><p:inputText id="quantiteLivree" value="#{lotRecpBean.currentLotReception.quantiteLivree}" title="QuantiteLivree" /></p:column>
                        <p:column><p:outputLabel  value="QuantiteRecue:" for="quantiteRecue" /></p:column>
                        <p:column><p:inputText id="quantiteRecue" value="#{lotRecpBean.currentLotReception.quantiteRecue}" title="QuantiteRecue" /></p:column>
                        <p:column><p:outputLabel value="NumBonLivraison:" for="numBonLivraison" /></p:column>
                        <p:column><p:inputText id="numBonLivraison" value="#{lotRecpBean.currentLotReception.numBonLivraison}" title="NumBonLivraison" /></p:column>                          
                    </p:row>                                                                                                                                    
                </p:panelGrid>                        
                <div>
                    <p:commandButton action="#{lotRecpBean.update()}" value="Enregistrer" styleClass="button"
                                     style="float: right" oncomplete="PF('lotRecepTable').filter();PF('w_edit').hide();" />               
                </div>  
            </h:form>
        </p:tab>    
    </p:tabView> 
</p:dialog> 


1 个答案:

答案 0 :(得分:1)

我解决了问题,它来自datatable ===&gt;的值。 datatable编辑器的值必须是一个列表,而不是一个返回列表数据表编辑器的方法只能使用列表1 -

 <p:dataTable id="data1" value="#{normeMicroEBean.listOfNorme}" 
                             var="item" editable="true" editMode="cell" > 

我在托管bean中创建一个列表,然后在按钮中执行该方法以填充在托管bean中创建的列表。谢谢你的回复