使用DataTable调用另一个页面 - 即时行选择

时间:2012-10-10 16:34:17

标签: jsf primefaces

我有一个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}"但没有成功!

1 个答案:

答案 0 :(得分:0)

我只使用了标签 <p:ajax event="rowSelect" listener="# {beanConsultaPorNum.onRowSelectHeader}" />

之间的<p:dataTable...> </p:dataTable>.