2016-07-07 61 views
0

我有以下Managed Bean的:如何在selectOneMenu更改上執行managed bean方法?

import javax.faces.bean.ManagedBean; 

@ManagedBean 
public class MyBean { 

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

} 

而且我.xhtml文件中的下列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> 

當我運行代碼,我得到以下異常:

javax.el.MethodNotFoundException 

在此先感謝

+1

如果你的聽衆不接受事件,你應該使用'listener =「#{myBean.mostrarCentroSeleccionado()}」' – Holger

+0

完整的代碼將使這個問題無法訪問......實際上@Holger answer對我有效 – Termosfera

回答

0

的問題是在標籤:

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

功能必須有 「()」 becouse我可不是服用該事件。

0

如果Holger的解決方案可行, 沒關係。

但是:用小寫字母開始Java類名開始是非常可怕的。您可以從大寫字母開始,JSF將爲您管理它,因此您仍然可以使用 listener =「#{myBean.mostrarCentroSeleccionado()}」 如果這不符合您的要求,可以使用 @ManagedBean(name = 「myBean」) 而不是myBean,你可以選擇你想要的東西。

+0

如果您對PrimeFaces有一點了解,您會明白這裏的重點在於以下兩種選擇之一。 1-在xhtml標記或屬性處丟失或錯誤。 2-執行方法存在的問題 其他任何事情只是爲了將您置於上下文中。這不相關或重要。 – Termosfera