H:comandlink não funciona

9 respostas
E

Pessoal ,tenho um command link

<h:commandLink title="Voltar"
                                   action="#{clienteMB.voltar}"
                                   style="margin-left:20px">
                        <h:graphicImage url="/imagens/voltar.jpg"
                                        style="border:0"/>

                    </h:commandLink>

metodo voltar no mb

// ja tentei da um return menu "string", mais nada tbm
    public void voltar() {
        System.out.println("entroo");
        HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        try {
            response.sendRedirect("menu.xhtml");
        } catch (IOException ex) {
           JSFUtil.enviarMenssagemErro("Erro ao voltar");
        }
    }

quando acionado o commadlink ele da um nullpointer na pagina,nem chega chamar o metodo voltar…alguem sabe o porque?

abaixo tem o codigo fonte inteiro.

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <title>Cadastro de Cliente</title>
        <script type="text/javascript">
            function validarApagar(xhr, status, args){
                var isClienteSelecionado = args.isClienteSelecionado;
                if(isClienteSelecionado){
                   dlgExclui.show();
                }
            }
              function validarAlterar(xhr, status, args){
                var alterou = args.alterou;
                    if(alterou) {
                        dlgCliente.hide();
                }
            }
        </script>
    </h:head>

    <f:view locale="pt_br">
        <h:body>
            <h:form>
                <p:toolbar>
                    <p:toolbarGroup align="left">
                        <p:menuButton value="Cadastro"
                                      rendered="#{menuMB.administrator or menuMB.simples}">
                            <p:menuitem value="Usuários"
                                        action="#{menuMB.irUsuario}"
                                        ajax="false"
                                        rendered="#{menuMB.administrator}"/>
                            <p:menuitem value="Clientes"
                                        action="#{menuMB.irCliente}"
                                        ajax="false"
                                        rendered="#{menuMB.administrator or menuMB.simples}"/>
                        </p:menuButton>
                    </p:toolbarGroup>
                    <p:toolbarGroup align="left">
                        <p:menuButton value="Processo">
                            <p:menuitem value="Manter Fotos"
                                        action="#{menuMB.irAlbum}"
                                        ajax="false"
                                        rendered="#{menuMB.administrator or menuMB.simples}"/>
                            <p:menuitem value="Selecionar Fotos"
                                        rendered="#{menuMB.cliente}"
                                        action="#{menuMB.irVisualizacaoAlbum}"
                                        ajax="false"/>
                        </p:menuButton>
                    </p:toolbarGroup>
                    <p:toolbarGroup align="left">
                        <p:menuButton value="Sair">
                            <p:menuitem value="Sair"
                                        action="#{menuMB.sair}"
                                        ajax="false"/>

                        </p:menuButton>
                    </p:toolbarGroup>
                </p:toolbar>
            </h:form>
            <h:form id="frmGridCliente" >
                <p:growl id="menssagensCliente"
                         life="5000"/>
                <p:dataTable id="dtClientes"
                             widgetVar="dtClientes"
                             var="cliente"
                             value="#{clienteMB.clientes}"
                             paginator="true"
                             rows="5"
                             selection="#{clienteMB.cliente}"
                             selectionMode="single"
                             rowSelectListener="#{clienteMB.selecionarCliente}"
                             onRowSelectComplete="dlgCliente.show();"
                             emptyMessage="Nao existe Cliente cadastrado"
                             style="width:100%"
                             update="frmCadastroCliente:itxNome, frmCadastroCliente:mskCpf, frmCadastroCliente:itxEmail ,frmCadastroCliente:itxSenha,  frmCadastroCliente:mskCelular, frmCadastroCliente:mskTelefone, frmCadastroCliente:cldDataNascimento, frmCadastroCliente:sorEnviaSms, frmCadastroCliente:sorEnviaEmail, frmCadastroCliente:clkGravar, frmCadastroCliente:clkAlterar, frmCadastroCliente:clkAlterarSenha">
                    <p:column sortBy="#{cliente.nome}"
                              filterBy="#{cliente.nome}">
                        <f:facet name="header">
                            <h:outputText value="Nome" />
                        </f:facet>
                        <h:outputText value="#{cliente.nome}" />
                    </p:column>
                    <p:column sortBy="#{cliente.cpf}"
                              filterBy="#{cliente.cpf}">
                        <f:facet name="header">
                            <h:outputText value="CPF" />
                        </f:facet>
                        <h:outputText value="#{cliente.cpf}" />
                    </p:column>
                    <p:column sortBy="#{cliente.dataNascimento}"
                              filterBy="#{cliente.dataNascimento}">
                        <f:facet name="header">
                            <h:outputText value="Data Nascimento"  />
                        </f:facet>
                        <h:outputText value="#{cliente.dataNascimento}">
                            <f:convertDateTime locale="pt_br"/>
                        </h:outputText>
                    </p:column>
                    <p:column sortBy="#{cliente.email}"
                              filterBy="#{cliente.email}">
                        <f:facet name="header">
                            <h:outputText value="Email" />
                        </f:facet>
                        <h:outputText value="#{cliente.email}" />
                    </p:column>
                    <p:column sortBy="#{cliente.senha}"
                              filterBy="#{cliente.senha}">
                        <f:facet name="header">
                            <h:outputText value="Senha" />
                        </f:facet>
                        <h:outputText value="#{cliente.senha}" />
                    </p:column>
                    <p:column sortBy="#{cliente.celular}"
                              filterBy="#{cliente.celular}">
                        <f:facet name="header">
                            <h:outputText value="Celular" />
                        </f:facet>
                        <h:outputText value="#{cliente.celular}" />
                    </p:column>
                </p:dataTable>
                <p:panel style="width:99.2%">
                    <p:commandLink id="clkIncluir"
                                   title="Incluir"
                                   oncomplete="dlgCliente.show()"
                                   action="#{clienteMB.incluir}"
                                   update="frmCadastroCliente:itxNome, frmCadastroCliente:mskCpf, frmCadastroCliente:itxEmail ,frmCadastroCliente:itxSenha,  frmCadastroCliente:mskCelular, frmCadastroCliente:mskTelefone, frmCadastroCliente:cldDataNascimento, frmCadastroCliente:sorEnviaSms, frmCadastroCliente:frmCadastroCliente:sorEnviaEmail, frmCadastroCliente:clkGravar, frmCadastroCliente:clkAlterar">
                        <h:graphicImage url="/imagens/novo.jpg"
                                        style="border:0"/>
                    </p:commandLink>
                    <p:commandLink title="Apagar"
                                   style="margin-left:20px"
                                   actionListener="#{clienteMB.validarApagar}"
                                   oncomplete="validarApagar(xhr, status, args)"
                                   update="frmGridCliente:menssagensCliente"
                                   process="frmGridCliente">
                        <h:graphicImage url="/imagens/apagar.jpg"
                                        style="border:0"/>
                    </p:commandLink>
                    <h:commandLink title="Voltar"
                                   action="#{clienteMB.voltar}"
                                   style="margin-left:20px">
                        <h:graphicImage url="/imagens/voltar.jpg"
                                        style="border:0"/>

                    </h:commandLink>
                </p:panel>
                <p:dialog widgetVar="dlgExclui"
                          header="Deseja apagar o cliente?"
                          modal="true">
                    <h:panelGrid columns="2">
                        <p:commandLink title="Sim"
                                       actionListener="#{clienteMB.apagar}"
                                       style="margin-left:40px"
                                       update="frmGridCliente"
                                       oncomplete="dlgCliente.hide(); dlgExclui.hide();">
                            <h:graphicImage url="/imagens/sim.jpg"
                                            style="border:0"/>
                        </p:commandLink>
                        <p:commandLink title="Não"
                                       style="margin-left:75px"
                                       oncomplete="dlgCliente.hide(); dlgExclui.hide();">
                            <h:graphicImage url="/imagens/nao.jpg"
                                            style="border:0"/>
                        </p:commandLink>
                    </h:panelGrid>
                </p:dialog>

            </h:form>
            <h:form id="frmCadastroCliente">
                <p:dialog id="dlgCliente"
                          widgetVar="dlgCliente"
                          header="Cliente"
                          width="500"
                          closable="false">
                    <h:panelGrid columns="2">
                        <h:outputLabel value="Nome:"
                                       for="itxNome" />
                        <p:inputText id="itxNome"
                                     value="#{clienteMB.cliente.nome}"
                                     size="35"
                                     required="true"
                                     requiredMessage="Informe o Nome"/>
                        <h:outputLabel value="CPF:"
                                       for="mskCpf" />
                        <p:inputMask id="mskCpf"
                                     mask="[CPF removido]"
                                     value="#{clienteMB.cliente.cpf}"
                                     required="true"
                                     requiredMessage="Informe o Cpf"/>
                        <h:outputLabel value="Data Nascimento:"
                                       for="cldDataNascimento" />
                        <p:calendar id="cldDataNascimento"
                                    value="#{clienteMB.cliente.dataNascimento}"
                                    locale="pt_br"
                                    readOnlyInputText="true"
                                    navigator="true"
                                    yearRange="-111:+39"
                                    pattern="dd/MM/yyyy"/>
                        <h:outputLabel value="Celular:"
                                       for="mskCelular" />
                        <p:inputMask id="mskCelular"
                                     mask="999-9999-9999"
                                     value="#{clienteMB.cliente.celular}"
                                     required="true"
                                     requiredMessage="Informe o celular"/>
                        <h:outputLabel value="Telefone:"
                                       for="mskTelefone" />
                        <p:inputMask id="mskTelefone"
                                     mask="999-9999-9999"
                                     value="#{clienteMB.cliente.telefone}"/>
                        <h:outputLabel value="E-mail:"
                                       for="itxEmail"/>
                        <p:inputText id="itxEmail"
                                     value="#{clienteMB.cliente.email}"
                                     size="35"
                                     required="true"
                                     requiredMessage="Informe o Email"/>
                        <h:outputLabel value="Senha"
                                       for="itxSenha"/>
                        <p:inputText id="itxSenha"
                                     value="#{clienteMB.cliente.senha}"
                                     required="true"
                                     requiredMessage="Informe a Senha"/>
                    </h:panelGrid>
                    <h:panelGrid columns="4" id="pnlSor">
                        <h:outputLabel value="Enviar Sms?:"
                                       for="sorEnviaSms" />
                        <h:selectBooleanCheckbox  id="sorEnviaSms"
                                                  value="#{clienteMB.cliente.enviaSms}"
                                                  style="margin-right:50px"/>
                        <h:outputLabel value="Enviar Email?:"
                                       for="sorEnviaEmail" />
                        <h:selectBooleanCheckbox  id="sorEnviaEmail"
                                                  value="#{clienteMB.cliente.enviaEmail}"/>
                    </h:panelGrid>
                    <h:panelGrid columns="3" >
                        <p:commandLink  id="clkGravar"
                                        title="Gravar"
                                        action="#{clienteMB.gravar}"
                                        disabled="#{!empty clienteMB.cliente.id}"
                                        style="margin-right:20px"
                                        update="itxNome, mskCpf, itxEmail ,itxSenha, mskCelular, mskTelefone, cldDataNascimento, sorEnviaSms, sorEnviaEmail, frmGridCliente:dtClientes, frmGridCliente:menssagensCliente">
                            <h:graphicImage url="/imagens/gravar.jpg"
                                            style="border:0"/>
                        </p:commandLink>
                        <p:commandLink id="clkAlterar"
                                       title="Alterar"
                                       action="#{clienteMB.alterar}"
                                       disabled="#{empty clienteMB.cliente.id}"
                                       oncomplete="validarAlterar(xhr, status, args)"
                                       update="itxNome, mskCpf, itxEmail ,itxSenha, mskCelular, mskTelefone, cldDataNascimento, sorEnviaSms, sorEnviaEmail, frmGridCliente, menssagensCliente"
                                       style="margin-left:20px">

                            <h:graphicImage url="/imagens/alterar.bmp"
                                            style="border:0"/>

                        </p:commandLink>
                        <p:commandLink  id="clkCancelar"
                                        title="Voltar"
                                        style="margin-left:20px"
                                        oncomplete="dlgCliente.hide();"
                                        immediate="true">
                            <h:graphicImage url="/imagens/voltar.jpg"
                                            style="border:0"/>
                        </p:commandLink>

                    </h:panelGrid>
                </p:dialog>
            </h:form>
        </h:body>
    </f:view>
</html>

obrigado

9 Respostas

G

opa!

Quando tu usa o action, ele deve retornar uma string. E no teu metodo voltar tu fez com void. faz um return “menu” caso nao abra a pagina, faz a navegacao no arquivo xml. Se nao sabe como fazer, é só avisar que damos um jeito.

flw

E

"Quando tu usa o action"
não necessariamente gustavo

porem como vc pode observar o meu comentario encima do metodo, eu fala que ja tentei fazer return um string “menu”, é da o mesmo erro…nullpoiter na pagina,o tomcat nem exibe o erro no console só da na pagina, outro ponto e que nem chama o metodo

este componete

<p:menuitem value=“Sair"
action=”#{menuMB.sair}"
ajax=“false”/>

so metodo sair faz a mesma coisa que o voltar e funciona

E

Alguem?

kritiuns

tente adicionar um ID pra ele ve oq acontece

jokacwb

Tente

<p:commandLink title="Voltar"  
                  action="menu" 
                  immediate="true"
                  ajax="false"
                  style="margin-left:20px">  
              <h:graphicImage url="/imagens/voltar.jpg"  style="border:0"/>  
      
</p:commandLink>
E

tentei colocar um id e nada,usei o prime tbm com ajax false e nada
oque eu faço?

E

Ninguem?

A

gustavocdesouza:
opa!

Quando tu usa o action, ele deve retornar uma string. E no teu metodo voltar tu fez com void. faz um return “menu” caso nao abra a pagina, faz a navegacao no arquivo xml. Se nao sabe como fazer, é só avisar que damos um jeito.

flw

Você tentou isso?

E

Sim

Criado 18 de maio de 2011
Ultima resposta 26 de mai. de 2011
Respostas 9
Participantes 5