我从素数开始,我正在尝试为我的数据表创建一个可编辑的对话框。当我点击编辑按钮(数据表的页脚)时,会出现对话框,但不显示所选行的值。怎么了?
我的 XHTML 文件:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core">
<body>
<ui:composition template="./../WEB-INF/template_sistema.xhtml">
<ui:define name="content">
<h:form prependId="false">
<p:dataTable id="dataTable" var="resultadoBanescap" value="#{lstResultados.resultadoBanescap}"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15,20"
emptyMessage="Não foram encontradas informações"
selection="#{resultadoBanescap.selecionado}" selectionMode="single">
<p:column id="colunaNumero"
filterBy="#{resultadoBanescap.rbcnr}"
sortBy="#{resultadoBanescap.rbcnr}"
filterMatchMode="contains">
<f:facet name="header">
<h:outputText value="Número" />
</f:facet>
<h:outputText value="#{resultadoBanescap.rbcnr}" />
</p:column>
<p:column id="colunaDia"
filterBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcdd}"
sortBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcdd}"
filterMatchMode="contains">
<f:facet name="header">
<h:outputText value="Dia" />
</f:facet>
<h:outputText value="#{resultadoBanescap.tbResultadoBanescapPK.rbcdd}" />
</p:column>
<p:column id="colunaMes"
filterBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcmm}"
sortBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcmm}"
filterMatchMode="contains">
<f:facet name="header">
<h:outputText value="Mês" />
</f:facet>
<h:outputText value="#{resultadoBanescap.tbResultadoBanescapPK.rbcmm}" />
</p:column>
<p:column id="colunaAno"
filterBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcaa}"
sortBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcaa}"
filterMatchMode="contains">
<f:facet name="header">
<h:outputText value="Ano" />
</f:facet>
<h:outputText value="#{resultadoBanescap.tbResultadoBanescapPK.rbcaa}" />
</p:column>
<f:facet name="footer">
<p:commandButton id="viewButton"
value="View"
update=":form:dataTable"
oncomplete="detalheDialog.show()"
onclick="detalheDialog.show()"/>
</f:facet>
</p:dataTable>
<p:dialog id="dialog" header="Detalhes" widgetVar="detalheDialog" resizable="false"
width="300" showEffect="clip" hideEffect="clip" modal="true" appendToBody="true">
<h:form id="frmUpdate">
<h:panelGrid id="display" columns="2" cellpadding="4">
<h:outputText value="Número:" />
<h:inputText value="#{lstResultados.selecionado.rbcnr}" />
<h:outputText value="Dia:" />
<h:inputText value="#{lstResultados.selecionado.tbResultadoBanescapPK.rbcdd}" />
<h:outputText value="Mês:" />
<h:inputText value="#{lstResultados.selecionado.tbResultadoBanescapPK.rbcmm}" />
<h:outputText value="Ano:" />
<h:inputText value="#{lstResultados.selecionado.tbResultadoBanescapPK.rbcaa}" />
</h:panelGrid>
</h:form>
</p:dialog>
</h:form>
</ui:define>
</ui:composition>
</body>
</html>
我的豆子文件:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.banestes.ui.bean;
import br.com.banestes.domain.TbResultadoBanescap;
import br.com.banestes.domain.controller.TbResultadoBanescapJpaController;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
/**
*
* @author 030072182
*/
@RequestScoped
@ManagedBean(name = "lstResultados")
public class ListResultados {
private List<TbResultadoBanescap> resultadoBanescap;
private TbResultadoBanescap selecionado;
public ListResultados() {
TbResultadoBanescapJpaController ctrl = new TbResultadoBanescapJpaController();
resultadoBanescap = ctrl.findTbResultadoBanescapEntities();
}
public List<TbResultadoBanescap> getResultadoBanescap()
{
return resultadoBanescap;
}
public TbResultadoBanescap getSelecionado() {
return selecionado;
}
public void setSelecionado(TbResultadoBanescap selecionado) {
this.selecionado = selecionado;
}
}
另一个问题是:是否可以在另一个 xhtml 中创建一个表单并在对话框中使用 he?
几件事:
- 所选行不会显示在对话框中,因为单击页脚中的按钮时对话框不会更新。您的更新应
update=":form:dataTable :dialog"
。 - 除非您对数据表上的数据执行某些操作(我在您的代码中看不到它),否则您也应该从更新中删除
:form:dataTable
。 - 在您的
<p:dataTable>
中,您将所选数据放入resultadoBanescap.selecionado
中。但是,在对话框中,您正在从lstResultados.selecionado
读取数据。检查逻辑。 - 您应该将对话框从第一种形式中取出。
- 是的,可以在另一个 xhtml 文件中创建一个表单,然后使用
<ui:include>
将其添加到对话框中。