我有一个dataTable
但是当我选择一行时没有任何反应,我试过打电话p:dialog
但没有任何反应。我尝试使用所选数据重定向到另一个页面,但也不能(这是我的目标)。我的代码中缺少什么。下面是我的 xhtml 和 bean。
xhtm:
<h:form id="form" style="font-size: 11pt">
<h3>Cancelar Processo de Portabilidade</h3>
<p:panel header="Consulta por Numeração" id="CancProcP1">
<h:panelGrid columns="3" style="margin-bottom:10px" cellpadding="5"
id="pgridTipoCanc1">
<p:selectOneRadio id="tipoCancela"
value="#{beanBuscarDadosCancPort.tipoBusca}">
<f:selectItem itemLabel="TN" itemValue="1" />
<f:selectItem itemLabel="Bilhete" itemValue="2" />
<f:selectItem itemLabel="Período" itemValue="3" />
<f:ajax render="pgridTipoCanc2" />
</p:selectOneRadio>
</h:panelGrid>
<h:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5"
id="pgridTipoCanc2">
<h:outputLabel for="tn" value="TN:"
rendered="#{beanBuscarDadosCancPort.tipoBusca == '1'}" />
<h:inputText id="tn" value="#{beanBuscarDadosCancPort.tn}"
rendered="#{beanBuscarDadosCancPort.tipoBusca == '1'}" />
<h:outputLabel for="bilhete" value="Bilhete de Portabilidade:"
rendered="#{beanBuscarDadosCancPort.tipoBusca == '2'}" />
<h:inputText id="bilhete"
value="#{beanBuscarDadosCancPort.srvProvId}"
rendered="#{beanBuscarDadosCancPort.tipoBusca == '2'}" />
<h:outputLabel for="dataInicial" value="Data Inicial"
rendered="#{beanBuscarDadosCancPort.tipoBusca == '3'}" />
<p:calendar id="dataInicial"
value="#{beanBuscarDadosCancPort.dataInicial}"
rendered="#{beanBuscarDadosCancPort.tipoBusca == '3'}" />
<h:outputLabel for="dataFinal" value="Data Final"
rendered="#{beanBuscarDadosCancPort.tipoBusca == '3'}" />
<p:calendar id="dataFinal"
value="#{beanBuscarDadosCancPort.dataFinal}"
rendered="#{beanBuscarDadosCancPort.tipoBusca == '3'}" />
</h:panelGrid>
<p:commandButton id="pesquisar"
action="#{beanBuscarDadosCancPort.pesquisar}"
value="Buscar" ajax="false" update="display" />
</p:panel>
</h:form>
<p:panel id="CancProcP2">
<h:form id="form2" style="font-size: 11pt">
<p:growl id="growl" showDetail="true"/>
<p:dataTable id="dataTable" var="valor"
value="#{beanBuscarDadosCancPort.listaNumeroPortado}"
paginator="true" rows="5" rowKey="#{valor.srvProvIdDoadoraAnterior}"
selection="#{beanBuscarDadosCancPort.selectedNumP}" selectionMode="single"
rowSelectListener="#{beanBuscarDadosCancPort.onRowSelect}"
onRowSelectUpdate="display growl"
onRowSelectComplete="carDialog.show()"
rowUnselectListener="#{beanBuscarDadosCancPort.onRowUnselect}"
onRowUnselectUpdate="growl"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="4,5,7"
style="max-width: 580px; min-width: 550px">
<f:facet name="header">
</f:facet>
<p:column selectionMode="single" style="width:18px" />
<p:column
style="max-width: 50px; min-width: 50px; overflow: hidden">
<f:facet name="header">
<h:outputText value="Operadora Doadora" />
</f:facet>
<h:outputText value="#{valor.srvProvIdDoadoraAnterior}" />
</p:column>
<p:column
style="max-width: 40px; min-width: 40px; overflow: hidden">
<f:facet name="header">
<h:outputText value="Bilhete" />
</f:facet>
<h:outputText value="#{valor.srvProvId}" />
</p:column>
<p:column
style="max-width: 40px; min-width: 40px; overflow: hidden">
<f:facet name="header">
<h:outputText value="Data/Hora da Janela" />
</f:facet>
<h:outputText value="#{valor.dataJanelaPortabilidade}" />
</p:column>
<p:column
style="max-width: 40px; min-width: 40px; overflow: hidden">
<f:facet name="header">
<h:outputText value="Telefone" />
</f:facet>
<h:outputText value="#{valor.tn}" />
</p:column>
</p:dataTable>
<p:dialog header="Car Detail" widgetVar="carDialog" resizable="false"
width="200" showEffect="explode" hideEffect="explode">
<h:panelGrid id="display" columns="2" cellpadding="4">
<f:facet name="header">
<p:graphicImage value="teste"/>
</f:facet>
<h:outputText value="Model:" />
<h:outputText value="#{beanBuscarDadosCancPort.selectedNumP.srvProvIdDoadoraAnterior}" />
</h:panelGrid>
</p:dialog>
</h:form>
豆
public class BuscarDadosCancelarPortBean implements Serializable {
private static final long serialVersionUID = 1L;
private List<NumeroPortado> regSelecionado = null;
private String tipoBusca;
private String tn;
private String srvProvId;
private Date dataInicial;
private Date dataFinal;
private List<NumeroPortado> listaNumeroPortado = null;
NumeroPortado numPortato = new NumeroPortado();
private NumPortadoDataModel numModel;
private NumeroPortado selectedNumP;
@EJB
private ConsultasSpnService consultaOp;
public List<NumeroPortado> pesquisar(){
String busca = null;
//String busca = "tn";
//String parametro = "1133100038";
String parametro = null;
String parametro2 = null;
if(tipoBusca.equals("1")){
parametro = tn;
busca = "tn";
}else if(tipoBusca.equals("2")){
parametro = srvProvId;//bilhete
busca = "bilhete";
}else if(tipoBusca.equals("3")){
//DateFormat df = new SimpleDateFormat("dd/MM/yy");
//parametro = df.format(dataInicial);
//parametro2 = df.format(dataFinal);
//busca = "data";
}
if(listaNumeroPortado == null){
listaNumeroPortado = new ArrayList<NumeroPortado>();
listaNumeroPortado = consultaOp.listarNumerosPortados(busca, parametro, parametro2);
//Excluir depois de descobrir porque não está pegando estes campos da tabela
for(int i=0;i<listaNumeroPortado.size();i++){
if(tipoBusca.equals("1")){
listaNumeroPortado.get(i).setTn(parametro);
}else if(tipoBusca.equals("2")){
listaNumeroPortado.get(i).setSrvProvId(parametro);
}
}
//numModel = new NumPortadoDataModel(listaNumeroPortado);
}
return listaNumeroPortado;
}
public String getTn() {
return tn;
}
public void setTn(String tn) {
this.tn = tn;
}
public String getSrvProvId() {
return srvProvId;
}
public void setSrvProvId(String srvProvId) {
this.srvProvId = srvProvId;
}
public Date getDataInicial() {
return dataInicial;
}
public void setDataInicial(Date dataInicial) {
this.dataInicial = dataInicial;
}
public Date getDataFinal() {
return dataFinal;
}
public void setDataFinal(Date dataFinal) {
this.dataFinal = dataFinal;
}
public String getTipoBusca() {
return tipoBusca;
}
public void setTipoBusca(String tipoBusca) {
this.tipoBusca = tipoBusca;
}
public List<NumeroPortado> getListaNumeroPortado() {
return listaNumeroPortado;
}
public void setListaNumeroPortado(List<NumeroPortado> listaNumeroPortado) {
this.listaNumeroPortado = listaNumeroPortado;
}
public NumeroPortado getNumPortato() {
return numPortato;
}
public void setNumPortato(NumeroPortado numPortato) {
this.numPortato = numPortato;
}
public ConsultasSpnService getConsultaOp() {
return consultaOp;
}
public void setConsultaOp(ConsultasSpnService consultaOp) {
this.consultaOp = consultaOp;
}
public List<NumeroPortado> getRegSelecionado() {
return regSelecionado;
}
public void setRegSelecionado(List<NumeroPortado> regSelecionado) {
this.regSelecionado = regSelecionado;
}
public NumPortadoDataModel getNumModel() {
return numModel;
}
public void setNumModel(NumPortadoDataModel numModel) {
this.numModel = numModel;
}
public NumeroPortado getSelectedNumP() {
return selectedNumP;
}
public void setSelectedNumP(NumeroPortado selectedNumP) {
this.selectedNumP = selectedNumP;
}
public void onRowSelect(SelectEvent event) {
FacesMessage msg = new FacesMessage("Line Selected", ((NumeroPortado) event.getObject()).getTn());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void onRowUnselect(UnselectEvent event) {
FacesMessage msg = new FacesMessage("Line Unselected", ((NumeroPortado) event.getObject()).getTn());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public String onRowSelectNavigate(SelectEvent event) {
FacesContext.getCurrentInstance().getExternalContext().getFlash().put("selectedNumP", event.getObject());
return "cancelarPortabilidade?faces-redirect=true";
}
}
我改变了rowSelectListener = "#{beanBuscarDadosCancPort.onRowSelect}"
没有rowSelectListener = "#{beanBuscarDadosCancPort.onRowSelectNavigate}"
成功!