2012-04-18 85 views
3

我有一個使用Datatable和Dialog在一起的大問題。PrimeFaces DataTable選擇在dialog.show上變爲空()

我需要點擊一個數據表的行並顯示一個對話框,該對話框從數據表的所選項加載數據。

選擇去罰款,但所選擇的元素被設置爲只要是所示的對話框空:/

下面是一些代碼:

<h:form id="form"> 
        <pou:dataTable widgetVar="conv" id="mex" var="conv" value="#{messagesBean.listaConversazioni}" paginator="true" rowKey="#{conv}" paginatorPosition="bottom" 
            selection="#{messagesBean.destinatario}" selectionMode="single" rows="15"> 
         <pou:ajax event="rowSelect" 
            oncomplete="convDialog.show()" update=":form:display, :growl, :menuPanel" /> 
         <pou:column> 
          <f:facet name="header"> 
           <h:outputText value="Conversazioni"/>                   
          </f:facet> 
          <h:outputText value="#{conv.username}"/>         
         </pou:column> 
        </pou:dataTable>      

        <pou:dialog id="convDialog" header="Conversazione" widgetVar="convDialog" onHide="conv.unselectAllRows()" position="center" modal="true" resizable="false" draggable="false" 
           showEffect="explode" hideEffect="explode" height="635" width="620">         
         <h:panelGrid id="display"> 
          <pou:panel id="postForm"> 
           <div align="center"> 
            <pou:inputTextarea value="#{messagesBean.messaggio}" cols="50" autoResize="true" maxlength="255"/> <br/> 
            <pou:commandButton action="#{messagesBean.invia(messagesBean.destinatario)}" value="Invia" update="display, :growl"/> 
           </div> 
          </pou:panel>    
          <pou:panel> 
           <div class="conversazionePanel"> 
            <pou:dataTable id="mexTable" var="mex" value="#{messagesBean.caricaConversazione(messagesBean.destinatario)}" rowStyleClass="postTable">           
             <pou:column style="border: none; background: rgba(0,0,0,0)"> 
              <div id="messaggio_#{mex.idMessaggio}"> 
               <pou:outputPanel rendered="#{mex.mittente eq loginBean.utente}"> 
                <pou:panelGrid columns="2"> 
                 <h:outputText value="Io"/> 
                 <div class="messaggioInviato">#{mex.testo}</div> 
                </pou:panelGrid> 
               </pou:outputPanel> 
               <pou:outputPanel rendered="#{mex.destinatario eq loginBean.utente}">                                     
                <pou:panelGrid columns="2"> 
                 <div class="messaggioRicevuto">#{mex.testo}</div> 
                 <h:outputText value="#{mex.mittente.username}"/> 
                </pou:panelGrid>                         
               </pou:outputPanel>             
              </div> 
             </pou:column>           
            </pou:dataTable> 
           </div> 
          </pou:panel>        
         </h:panelGrid>                      
        </pou:dialog>       
       </h:form> 

_

#{messagesBean.listaConversazioni}返回列表用戶

_

#{conv}是用戶

_

#{messagesBean.destinatario}是,我需要設置用戶。當我點擊該行時,它取得了conv的值,但它突然變爲null。

奇怪想到的是,

<pou:dataTable id="mexTable" var="mex" value="#{messagesBean.caricaConversazione(messagesBean.destinatario)}" 

同時,在同一個對話框

<h:outputText value="#{messagesBean.destinatario==null}"> 

打印true:\

這有什麼錯呢?

+0

對這個有什麼更新?我正面臨着一些simillar – 2012-07-11 20:42:37

回答

0

不知道,但rowKey="#{conv.id}"也許?