2016-07-07 26 views
0

Ich habe Bean die folgenden Managed:Wie man die Bean-Methode bei selectOneMenu-Änderung ausführt?

import javax.faces.bean.ManagedBean; 

@ManagedBean 
public class MyBean { 

    public void mostrarCentroSeleccionado() { 
     System.out.println("Value changed"); 
    } 

} 

Und in meinem .xhtml Datei die folgende selectOneMenu:

<p:selectOneMenu value="#{MyBean.centros.idcentro}" > 

    <p:ajax event="change" listener="#{MyBean.mostrarCentroSeleccionado}" /> 

    <f:selectItem itemLabel="Seleccione un centro" itemValue="" /> 
    <f:selectItems value="#{MyBean.centros}" /> 
</p:selectOneMenu> 

Wenn ich laufe, dass Code ich die folgende Ausnahme erhalten:

javax.el.MethodNotFoundException 

Vielen Dank im Voraus

+1

Wenn Ihr Listener das Ereignis nicht akzeptiert, sollten Sie 'listener =" # {myBean.mostrarCentroSeleccionado()} "verwenden' – Holger

+0

Der vollständige Code macht diese Frage nicht erreichbar ... in der Tat arbeitete @Holger Antwort für mich – Termosfera

Antwort

0

Das Problem war im Tag:

<p:ajax listener="#{MyBean.function()}"/> 

Die Funktion haben muss "()" becouse ich bin nicht das Ereignis nehmen.

0

Wenn Holgers Lösungen funktionieren, Das ist gut.

ABER: Es ist schrecklich, einen Java Class Name mit Kleinbuchstaben zu starten. Sie können mit einem Großbuchstaben beginnen und JSF wird es für Sie verwalten, so dass Sie immer noch verwenden können listener = "# {myBean.mostrarCentroSeleccionado()}" Wenn dies Ihren Anforderungen nicht entspricht, können Sie @ManagedBean (name = "myBean") Anstelle von myBean können Sie wählen, was immer Sie wollen.

+0

Wenn Sie etwas über PrimeFaces wissen, werden Sie verstehen, dass der Punkt hier in einer von zwei Optionen ist. 1- Etwas fehlt oder falsch an einem Xhtml-Tag oder -Attribut. 2- Ein Problem mit der auszuführenden Methode Alles andere dient nur dazu, Sie in einen Kontext zu setzen. Es ist nicht relevant oder wichtig. – Termosfera