P:commandbutton nao executa o javascript determinado no oncomplete

Boa noite pessoal, estou seguindo uma video aula pela internet. O exemplo é um simples login que após a entrada correta das informacoes deverá ser carregado um outro formulário jsf.

Ao executar a aplicacao, o sistema informa que as informacoes estao corretas mas nao carrega o formulario seguinte. Tenho a impressao que o javascritpt nao é carregado.

Segue abaixo meu código-fonte.



<h:body>

    <h:form id="formLogin">

      <p:growl id="growl" showDetail="true" sticky="true" life="3000"/>

      <div id="grpLogin" style="background-image: url(./resources/images/wallpaper1.png)">

        <div id="grpFieldsLogin" style="margin: 200px 25px;">
          <h:panelGrid columns="2" border="0" columnClasses="coluna1, coluna2">
            <h:outputLabel value="Nome do usuário:" for="usuario" />
            <p:inputText id="usuario" value="#{loginBean.usuario.usuario}" style="width: 200px"
                         maxlength="64" required="true" label="Nome do usuário">
            </p:inputText>
            <h:outputLabel value="Senha:" for="senha" />
            <p:password id="senha" value="#{loginBean.usuario.password}" feedback="true"
                        promptLabel="Nível de complexidade" weakLabel="fraca"
                        goodLabel="média" strongLabel="segura" style="width: 200px"
                        maxlength="64" required="true" label="Senha">
            </p:password>
            <br></br>
            <p:commandButton value="Acessar" ajax="false" update="growl" 
                             actionListener="#{loginBean.login(actionEvent)}" 
                             oncomplete="handleLoginRequest(xhr, status, args)"/>
          </h:panelGrid>
        </div>
      </div>
    </h:form>

    <script type="text/javascript">
      function handleLoginRequest(xhr, status, args) {
        if (args.validationFailed || !args.loggedIn) {
          jQuery('#dialog').effect("shake", {times: 3}, 100);
        } else {
          dlg.hide();
          jQuery("#loginlink").faceOut();
          window.onload = "./common/main.jsf";
        }
      }
    </script>
  </h:body>

Alguem poderia me informar onde está o erro:

Att,
Gustavo Freitas

antes coloque seu código entre as tags de código amigo

Ola amigo,

voce fala entre <h:form></h:form>

Mas no vídeo o cara fez fora de um <p:dialog> <h:form> e funcionou. Vou testar aqui entao e lhe respondo se funcionou. Valeu pela ajuda

Att, Gustavo

Gustavo, o que ele disse é pra você incluir o código que você postou entre as tags [code][ /code] aqui do fórum, para que ele seja formatado corretamente.

Leia o item 7 do nosso How To: http://www.guj.com.br/java/287476-gujnautas-how-to

blz

legal cara,
acho que se vc colocar ajax=true no seu commandButton já resolve, pois oncomplete é um evento de (quando DOM for atualizado faça isso aqui);

Mas seria melhor em vez de chamar a sua página main pelo xhtml,

chamar ele por uma action, tipo:

public String login(){
     //Se login passou
     return "/common/main.jsf?faces-redirect=true"
}

Ola amigo, segui seu conselho e fui pela simplicidade, funcionou como eu queria. O metodo no bean ficou assim:

public String login(ActionEvent actionEvent) {

    RequestContext context = RequestContext.getCurrentInstance();
    FacesMessage msg = null;
    boolean loggedIn = false;

    UsuariosDao usuarioDao = new UsuariosDaoImpl();
    usuario = usuarioDao.buscarPorUsuario(usuario);

    if (usuario != null) {
      loggedIn = true;
      return "./common/main.jsf?faces-redirect=true";
    } else {
      loggedIn = false;
      msg = new FacesMessage(FacesMessage.SEVERITY_WARN,
              "Erro de autenticação!!!", "Usuario e senha incorretos!!!");
      FacesContext.getCurrentInstance().addMessage(null, msg);
      context.addCallbackParam("loggedIn", loggedIn);
      return null;
    }

MANO !!! Value mesmo pela ajuda, estou a quase uma semana tentando descobrir o que estava de errado. Estava quase desistindo.

Att, Gustavo