JSF <f:ajax>

Boa tarde prezados,

Ao executar um <f:ajax> do jsf está abrindo em um alert o seguinte erro:
serverError: Class javax.faces.el.EvaluationException

segue minha página:

<!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:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">  
<h:head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>LOGIN</title>
	<meta name="robots" content="noindex, nofollow" />
	
<!-- 	<link rel="stylesheet" type="text/css" href="css/login.css" ></link> -->
	<link href='http://fonts.googleapis.com/css?family=Dosis:200;400,600,800' rel='stylesheet' type='text/css'></link>
	<link rel="icon" type="image/png" href="../tpl/images/upico.png"></link>
	
	<script type="text/javascript" src="../jsc/jquery.js"></script>
<!-- 	<script type="text/javascript" src="jsc/login.js"></script> -->
	
	<script type="text/javascript">
		function functionName(data) {
		    var status = data.status; // pode ser "begin", "complete" ou "success".
		    var source = data.source; // O elemento pai HTML DOM.
// 		    alert('functionName '+status);
// 		    alert('functionName '+source);
		    switch (status) {
		        case "begin": // Antes da solicitação do Ajax é enviada.
		        {
		        	$('.loginbox h1 img').fadeIn('fast');
		            break;
		        }
		        case "complete":  // Após a resposta do Ajax é chegado.
		        {
		        	$('.loginbox h1 img').fadeOut('slow');
		            break;
				}
// 		        case "success": // Depois de actualização do DOM HTML com base na resposta do Ajax.
// 		        {
// 		        	alert('OK');		
// 		            break;
// 		        }
// 		        case "error":
// 		        {
// 		        	alert('Error ao chamar o servidor!');
// 			        break;
// 			    }
		    }
		}
	</script>

</h:head>

<h:body>
<h:outputStylesheet library="css" name="login.css" />

<div class="loginbox">
	<h1>Efetuar Login: <img src="img/loader.gif" alt="Carregando" title="Carregando" /></h1>
    <h:form name="login">
    	<label class="label">
        	<span class="field">Usuário:</span>
        	<h:inputText name="user" id="login" value="#{autenticadorBean.login}"/>
<!--             <input type="text" name="user" id="login"/> -->
        </label>
                
        <div class="label">
        	<span class="field">Senha:</span>   
<!--             <input type="password" name="pass" class="pass" id="senha" value="#{autenticadorBean.senha}"/>  -->
            <h:inputSecret name="pass" class="pass" id="senha" value="#{autenticadorBean.senha}"/>           
            <h:commandButton value="Logar-se" class="btn" action="#{autenticadorBean.autentica()}"> <f:ajax onevent="functionName" /> 
            </h:commandButton>          
        </div>        
    </h:form>
    
    
    
    <div class="msg"><p class="erro">Erro ao logar! Dados não conferem!</p></div><!--/msg-->
    <div class="msg"><p class="aviso">Informe seu usuário e senha!</p></div><!--/msg-->
    <div class="msg"><p class="sucesso">Login efetuado, aguarde...</p></div><!--/msg-->
    
</div><!--/login-box-->

<a class="backsite" href="index.xhtml" title="Voltar ao site">voltar ao site</a>


</h:body>
</html>

Meu filtro:

package br.com.ribas.autenticacao;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebFilter(servletNames = { "Faces Servlet" })
public class ControleDeAcesso implements Filter {
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

		HttpServletRequest req = (HttpServletRequest) request;
		HttpSession session = req.getSession();
		System.out.println("filtrando.....");
		if ((session.getAttribute("USUARIOLogado") != null)
				|| (req.getRequestURI().endsWith("index.xhtml"))
				|| (req.getRequestURI().contains("javax.faces.resource/"))) {

			

				//redireciona("/Logado.xhtml", response);
			System.out.println("passou filtro..");
			chain.doFilter(request, response);
		}

		else {
			System.out.println("errooo filtro..");
			redireciona("index.xhtml", response);
		}

	}

	public void init(FilterConfig filterConfig) throws ServletException {
	}

	public void destroy() {
	}

	private void redireciona(String url, ServletResponse response)
			throws IOException {
		HttpServletResponse res = (HttpServletResponse) response;
		res.sendRedirect(url);
	}
} 

E minha autenticação de teste:

package br.com.ribas.autenticacao;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import br.com.ribas.util.SessionUtil;

@RequestScoped
@ManagedBean
public class AutenticadorBean implements Serializable {

	private static final long serialVersionUID = 1L;

	private String login;
	private String senha;

	public String autentica() {
		System.out.println("autentica..");
		System.out.println("login: "+ login + " senha: "+ senha);
			
		if (login.equals("admin")&&senha.equals("admin")) {
			System.out.println("Confirmou  usuario e senha ...");		
			
			//ADD USUARIO NA SESSION
			
			Object b = new Object();
			
			SessionUtil.setParam("USUARIOLogado", b);
			
			return "/inc/header.xhtml?faces-redirect=true";

		} else {
			System.out.println("Erroo Senha..");
			return null;

		}

	}

	/**
	 * M�todo que efetua o logout
	 * 
	 * @return
	 */
	public String registraSaida() {

		//REMOVER USUARIO DA SESSION
		
		System.out.println("registraSaida..");
		return "/index.xhtml?faces-redirect=true";
	}

	// GETTERS E SETTERS


	public String getSenha() {
		return senha;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

}

Se eu tirar o
<f:ajax onevent="functionName" />
do
<h:commandButton value="Logar-se" class="btn" action="#{autenticadorBean.autentica()}">

Ele funciona mas preciso executar esse método javascript,
alguém consegue me ajudar?

Então resolvi meu problema assim:

<h:commandButton value="Logar-se" class="btn" id="logar" > 
           <f:ajax onevent="functionName" listener="#{loginBean.autentica()}" execute="@all"/> 
</h:commandButton>  

quando coloco execute="@all" ele envia tudo do form para o servidor, ai o login e senha vão para ser autenticados.

Meu problema é o seguinte… quando o enviar ao servidor mesmo sendo senha errada ou correta vai retornar um success aqui:

function functionName(data) {
		    var status = data.status; // pode ser "begin", "complete" ou "success".
		    var source = data.source; // O elemento pai HTML DOM.
// 		    alert('functionName '+status);
// 		    alert('functionName '+source);
		    switch (status) {
		        case "begin": // Antes da solicitação do Ajax é enviada.
		        {
		        	$('.loginbox h1 img').fadeIn('fast');
		            break;
		        }
		        case "complete":  // Após a resposta do Ajax é chegado.
		        {
		        	$('.loginbox h1 img').fadeOut('slow');			        	        	
		            break;
				}
		        case "success": // Depois de actualização do DOM HTML com base na resposta do Ajax.
		        {
		        	$(".loginbox .msg").css("display", "block");	
		            break;
		        }
		        case "error":
		        {
		        	alert('Error ao chamar o servidor!');
			        break;
			    }
		    }
		}

Então eu preciso retornar um Ok ou Erro do servidor e quando cair no success avaliar qual consição caiu para mostrar a mensagem que acertou a senha ou error e redirecionar para a página logado quando senha = Ok, mas como fazer isso??