[RESOLVIDO] <p:CommandButton> Não chama o método do MB!

2 respostas
S

Olá!

tenho duas páginas jsf que seguem um template.

A tag do form está declarada no template.

O que acontece é o seguinte: Numa das páginas, existe um cadastro. Esta página funciona perfeitamente.
Na página em que estou trabalhando agora, é uma página onde o cara vai preencher dois campos e apertar o botão, porém, este botão não faz nada. O método do MB não é chamado.

O que eu achei mais estranho de tudo, é que na mesma página eu tenho um outro botão mais abaixo que funciona normalmente…

Segue o código do template e da página problemática pra vcs darem uma olhada:

template:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <h:outputStylesheet name="../resources/css/style.css" />
        <title>e-Champs</title>   
        <h:outputScript name="../resources/js/primefaces-locales.js" />
    </h:head>
    <h:body>
        <h:form id="principal">            
            <table border="0" width="1000" align="center" cellpadding="0" cellspacing="0">
                <tr>
                    <td colspan="2">
                        <ui:insert name="header"></ui:insert>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <ui:insert name="menu"></ui:insert>
                    </td>
                </tr>
                <tr></tr>
                <tr>
                    <td colspan="2" height="5" class="bgcor"></td>
                </tr>
                <tr>
                    <td class="bgcor">
                        <ui:insert name="body"></ui:insert>
                    </td>
                </tr>
                <tr></tr>
                <tr>
                    <td colspan="2">
                        <ui:insert name="footer"></ui:insert>
                    </td>
                </tr>
            </table>  
        </h:form>
    </h:body>
</html>

pagina bugada:

<ui:composition template="templateuser.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                xmlns:ui="http://java.sun.com/jsf/facelets">

    <ui:define name="header">
        <ui:include src="../bannertop.xhtml"/>
    </ui:define>

    <ui:define name="menu">
        <ui:include src="../menubar.xhtml"/>
    </ui:define>    

    <ui:define name="body">

        <table align="center" height="250">            
            <tr>
                <td align="center">       
                    <p:messages id="mensagens" showDetail="true"/>
                    <p:panelGrid columns="2">  
                        <f:facet name="header">  
                            Efetue seu Login  
                        </f:facet>  

                        <h:outputLabel for="usuario" value="Usuário:" />  
                        <p:inputText id="usuario" value="#{loginUsuarioMB.login}" label="Usuário" style="width: 200px"/>  

                        <h:outputLabel for="senha" value="Senha:" />  
                        <p:password id="senha" value="#{loginUsuarioMB.senha}" label="Senha" style="width: 200px"/>  

                        <f:facet name="footer">  
                            <p:commandButton type="button" 
                                             value="Login" 
                                             icon="ui-icon-check" 
                                             style="margin:0"  
                                             update=":principal:mensagens"
                                             actionListener="#{loginUsuarioMB.logar}"/>  
                        </f:facet>  
                    </p:panelGrid>  
                </td>
            </tr>                        
            <tr>
                <td>
                    <p class="textobody" align="center">Ainda não é Cadastrado?<br/>
                        <p:commandButton value="Cadastre-se aqui" 
                                         action="#{loginUsuarioMB.redirecionarCadastro}"/>
                    </p>
                </td>
            </tr>            
        </table>
    </ui:define>

    <ui:define name="footer">
        Eu sou apenas o rodapé =/
    </ui:define>
</ui:composition>

o botão com actionListener=#{loginUsuarioMB.logar} não funciona…
já o botão com action=#{loginUsuarioMB.redirecionarCadastro} funciona…

O método “logar” recebe o parâmetro ActionEvent do faces…

2 Respostas

E

Tente sem o type=“button”.

S

Cara, não sei porque raios este type=“button” estava ali… porém retirando ele funcionou!

Muito obrigado!

Criado 11 de outubro de 2012
Ultima resposta 12 de out. de 2012
Respostas 2
Participantes 2