Icefaces 3.0.1 FileEntry: FileEntryListener nunca é chamado

1.1, IceFaces 3.0.1 e JSF 2.1 e estava tentando trabalhar com ace: fileentry. Eu não consigo entender porque o ouvinte nunca é chamado! Até mesmo o IDE me envia um aviso "pruebaBean.sampleListener é uma propriedade desconhecida". Aqui está um pequeno exemplo do que estou fazendo. Quando clica no botão de envio nada acontece. Alguém pode me ajudar ?? Poderia ser algum tipo de bug?

prueba.xhtml:

<code><?xml version="1.0" encoding="UTF-8"?>
     <!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:ice="http://www.icesoft.com/icefaces/component"
       xmlns:ace="http://www.icefaces.org/icefaces/components">

 <h:head>
 </h:head>
 <h:body>
     <ice:form id="usuarioForm">
         <ice:panelGrid columns="2">
             <ace:fileEntry id="fileEntryImage" absolutePath="c:\iTablero\imagenes"
                             useSessionSubdir="false" useOriginalFilename="false"
                             fileEntryListener="#{pruebaBean.sampleListener}"/>
             <ice:commandButton type="submit" value="Subir archivo"/>
         </ice:panelGrid>
         <ice:messages/>
     </ice:form>
 </h:body>
</code>

PruebaBean.java:

<code> package com.itablero.backingbeans;

 import java.io.Serializable;
 import javax.annotation.ManagedBean;
 import javax.faces.bean.RequestScoped;
 import org.icefaces.ace.component.fileentry.FileEntry;
 import org.icefaces.ace.component.fileentry.FileEntryEvent;
 import org.springframework.stereotype.Controller;

 @ManagedBean
 @Controller
 @RequestScoped
 public class PruebaBean implements Serializable {

     public void sampleListener (FileEntryEvent e) {
         System.out.println("it work!");
         FileEntry fe = (FileEntry) e.getComponent();
         //some others operations
     }
 }
</code>
Atualização 1

Graças a @fischermatte eu encontrei o problema foi substituir ice: commandButton para h: commandButton. Mas quando eu apliquei isso ao formulário completo original e não funcionou. O método fileEntryListener nunca é chamado. Alguém pode ver o erro aqui? Logicamente, o exemplo anterior e o código abaixo têm o mesmo web.xml, faces-config.xml, etc. Observe que o botão para enviar o arquivo é h: commandButton e há um ice: commandButton para o formulário completo. Eu já tentei mudar isso por h h: cb. Aqui está o formulário original (que é exibido em uma janela pop-up / modal) e bean:

usuariosList.xhtml

<code>                <ice:panelPopup rendered="#{usuariosBean.showPopup}"
                            visible="#{usuariosBean.showPopup}"
                            modal="true"
                            autoCentre="true">

                <f:facet name="header">
                    <h:panelGroup>
                        <h:panelGroup style="float: left;">
                            Usuario
                        </h:panelGroup>
                        <h:panelGroup style="float: right;">
                            <ice:form>
                            <h:commandButton image="/resources/images/popup-close.png"
                                            alt="Cerrar" title="Cerrar"
                                            style="height: 11px; width: 11px; border: 0;"
                                            action="#{usuariosBean.closePopup}"/>
                            </ice:form>
                        </h:panelGroup>
                    </h:panelGroup>
                </f:facet>
                <f:facet name="body">
                    <ice:form id="usuarioForm">
                        <ice:panelGrid columns="2">
                            <p>Nombre:</p>
                            <ice:inputText id="nombre" label="nombre" value="#{usuariosBean.usuario.nombre}" size="40" />
                            <p>Imagen:</p>
                            <ice:graphicImage value="#{usuariosBean.usuario.imagen}"/>
                            <ace:fileEntry id="fileEntryImage" absolutePath="c:\iTablero\imagenes"
                                            useSessionSubdir="false" useOriginalFilename="false"
                                            fileEntryListener="#{usuariosBean.formListener}"/>
                            <h:commandButton type="submit" value="Subir archivo"/>
                        </ice:panelGrid>
                        <ice:messages for="usuarioForm"/>
                        <ice:commandButton value="Guardar" action="#{usuariosBean.save()}" />
                    </ice:form>
                </f:facet>                    
            </ice:panelPopup>
</code>

UsuariosBean.java

<code>package com.itablero.backingbeans;

import com.itablero.excepciones.DAOException;
import com.itablero.modelo.Usuario;
import com.itablero.servicios.AdminService;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.icefaces.ace.component.fileentry.FileEntry;
import org.icefaces.ace.component.fileentry.FileEntryEvent;
import org.icefaces.ace.component.fileentry.FileEntryResults;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@ManagedBean
@Controller
@ViewScoped
public class UsuariosBean implements Serializable {

@Autowired
private AdminBean adminBean;
@Autowired
private AdminService adminService;
private Usuario usuario = new Usuario();
private boolean showPopup;

//getter and setters 

public boolean isShowPopup() {
    return showPopup;
}

public void setShowPopup(boolean showPopup) {
    this.showPopup = showPopup;
}


public void openPopup() {
    this.showPopup = true;
}

public void closePopup() {
    this.showPopup = false;
    this.usuario = new Usuario();
}

public String edit(Usuario usuario) {
    this.usuario = usuario;
    this.showPopup = true;
    return "usuariosList";
}

public String delete(Usuario usuario) {
    adminService.delete(usuario);
    return "usuariosList";
}

public String save() {
    try {
        usuario.setTutor(adminBean.getLoggedTutor());
        adminService.save(usuario);
    } catch (DAOException ex) {
        Logger.getLogger(TutoresBean.class.getName()).log(Level.SEVERE, null, ex);
    }
    usuario = new Usuario();
    this.showPopup = false;
    return "usuariosList";
}

public void formListener(FileEntryEvent e) {
    System.out.println("Entro");
    FileEntry fe = (FileEntry)e.getComponent();
    FileEntryResults results = fe.getResults();
    //other stuff
}

}
</code>
Atualização 2

Acho que descobri por que não está funcionando, mas preciso de ajuda com a correção. Fiz as correções como @fischermatte me aconselhando, mas não funcionou.

Para chegar a esta página com o formulário, primeiro tem que navegar jogar a página principal/admin/admin.html, se olhar o URL no navegador aparecehttp://localhost:8084/iTablero/admin/admin.html. Esta página tem um menu, uma das opções deste menu leva-me à página com o formulário problemático. Mas, porque é uma chamada AJAX (se eu não estou errado) a URL no navegador não muda, ele mantém ohttp://localhost:8084/iTablero/admin/admin.html. E o fileEntry nunca chama o ouvinte. Agora, se eu inserir o URL sozinhohttp://localhost:8084/iTablero/admin/usuariosList.html, a página é exibida corretamente como antes, mas agora A FICHA DE ARQUIVOS FUNCIONA PERFEITAMENTE !!! Eu não tenho idéia de como corrigir isso, terá que usar redirecionamentos? Eu acho que é algo em torno de AJAX ....... ajuda pls! :-D

Atualização 3

Esse é o menu, sem redirecionamento não está funcionando.

<code>       <h:form>
            <ice:menuBar orientation="horizontal">
                <ice:menuItem value="Tutores" action="tutoresList"/>
                <ice:menuItem value="Usuarios" action="usuariosList"/>
                <ice:menuItem value="Tableros" action="tablerosList"/>
                <ice:menuItem value="Simbolos" action="simbolosList"/>
                <ice:menuItem value="Estadisticas" action="estadisticas"/>
                <ice:menuItem value="Salir" action="#{adminBean.logout()}"/>
            </ice:menuBar>
       </h:form>
</code>

Comaction="usuariosList?faces-redirect=true" funciona bem. Já teste com navegação direta para um formulário de página básico com apenas um FileEntry e não funciona também. Mais uma vez, se eu usar redirecionamento, funciona bem. Eu acho que é algum tipo de problema com este componente e encaminhar a navegação.

questionAnswers(1)

yourAnswerToTheQuestion