Icefaces 3.0.1 FileEntry: FileEntryListener wird niemals aufgerufen

1.1, IceFaces 3.0.1 und JSF 2.1 und versuchte mit ace: fileentry zu arbeiten. Ich kann nicht verstehen, warum der Zuhörer nie angerufen wird! Sogar die IDE sendet mir eine Warnung "pruebaBean.sampleListener ist eine unbekannte Eigenschaft". Hier ist ein kurzes Beispiel dafür, was ich tue. Wenn Sie auf "Senden" klicken, geschieht nichts. Kann mir jemand helfen ?? Könnte eine Art Fehler sein?

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>
Update 1

Dank @fischermatte fand ich das Problem, ice zu ersetzen: commandButton für h: commandButton. Aber als ich das auf das Original-Formular angewendet habe und nicht funktioniert habe. Die Methode fileEntryListener wird niemals aufgerufen. Kann hier jemand den Fehler sehen? Das vorherige Beispiel und der folgende Code haben logischerweise die gleiche Datei "web.xml", "faces-config.xml" usw. Beachten Sie, dass die Schaltfläche zum Senden der Datei "h: commandButton" und "ice: commandButton" für das vollständige Formular ist. Ich habe bereits versucht, dies zu ändern: cb. Hier ist das Originalformular (das in einem Popup- / Modal-Fenster angezeigt wird) und 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>
Update 2

Ich glaube, ich habe herausgefunden, warum es nicht funktioniert, brauche aber Hilfe bei der Lösung. Ich habe die Korrekturen als @fischermatte Rat an mich gemacht, aber nicht funktioniert.

Um diese Seite mit dem Formular zu erreichen, müssen Sie zuerst auf der Hauptseite navigieren/admin/admin.htmlWenn ein Blick auf die URL im Browser zeigthttp://localhost:8084/iTablero/admin/admin.html. Diese Seite hat ein Menü, eine dieser Menüoptionen bringt mich zu der Seite mit dem problematischen Formular. Da es sich aber um einen AJAX-Aufruf handelt (wenn ich mich nicht irre), ändert sich die URL im Browser nicht, sie behält diehttp://localhost:8084/iTablero/admin/admin.html. Und der fileEntry ruft niemals den Listener auf. Nun, wenn ich die URL selbst eingebehttp://localhost:8084/iTablero/admin/usuariosList.html, die Seite wird wie bisher korrekt angezeigt, aber jetzt FUNKTIONIERT DIE DATEI PERFEKT !!! Ich habe keine Ahnung, wie ich das beheben soll, muss ich Weiterleitungen verwenden? Ich denke, ist etwas um Ajax ....... Hilfe pls! :-D

Update 3

Das ist das Menü, ohne Umleitung geht das nicht.

<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>

Mitaction="usuariosList?faces-redirect=true" funktioniert gut. Testen Sie bereits mit Vorwärtsnavigation zu einem einfachen Seitenformular mit nur einem FileEntry und funktioniert auch nicht. Auch hier funktioniert die Weiterleitung einwandfrei. Ich denke, ist eine Art Problem mit dieser Komponente und Vorwärtsnavigation.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage