我在同时使用 Datatable 和 Dialog 时遇到了一个大问题。
我需要单击数据表的行并显示一个对话框,该对话框从数据表的所选项目加载数据。
选择正常,但一旦显示对话框,所选元素就会设置为 null :/
这是一些代码:
<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 :\
这是怎么回事?
最佳答案
不确定,但是rowKey="#{conv.id}"
也许吧?
关于jsf - PrimeFaces DataTable 选择在dialog.show() 上变为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10208091/