Problema com commandLink actionListener

Amigos,

Estou tentando fazer uma imagem disparar um evento mas não estou conseguindo.

Tenho os seguintes arquivos:

cadastro.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib prefix="rich" uri="http://richfaces.ajax4jsf.org/rich"%>
<%@ taglib prefix="stella" uri="http://stella.caelum.com.br/faces"%>
<%@ taglib prefix="a4j" uri="http://richfaces.org/a4j"%>


<f:view>

	<h:form id="formUsuario">

		<a4j:keepAlive beanName="usuarioHandler" />
		<br>

		<fieldset><legend>Usuários</legend> <br>

		<table>
			<tr>
				<td><h:commandLink actionListener="#{usuarioHandler.novo}">
					<h:graphicImage url="/img/novo.gif" />
				</h:commandLink></td>
			</tr>
		</table>
</fieldset>
	</h:form>
</f:view>

UsuarioHandler

package teste;

import javax.faces.event.ActionEvent;


public class UsuarioHandler {

	public void novo(ActionEvent event) {
		
		System.out.println("*** TESTE ***");
		
	}

}

A pagina é exibida sem nenhum erro porém quando clico na imagem ocorre apenas um refresh na tela e não exibe a String “*** TESTE ***” o que indica que o método não foi chamado. Alguém já passou por isso?

Obrigado,
Tássio

Ao invés do actionListener porque você não usar simplesmente o action?!

Porque eu não desejo uma navegação. Quero apenas executar um método sem retorno.

Tenta colocar um

  
import javax.faces.event.ActionEvent;   

import org.jboss.seam.annotations.Name;
  
@Name("usuarioHandler")  
public class UsuarioHandler {   
  
    public void novo(ActionEvent event) {   
           
        System.out.println("*** TESTE ***");   
           
    }   
  
}

Na sua action.

Acho que funciona.

Kra utiliza o atributo action e um método void no handler

                &lt;h:commandLink action="#{usuarioHandler.novo}"&gt;  
                    &lt;h:graphicImage url="/img/novo.gif" /&gt;  
                &lt;/h:commandLink&gt;
    ...
    public void novo() {  
          
        System.out.println("*** TESTE ***");  
          
    } 
    ...