如何在selectOneMenu上执行托管bean方法更改?

时间:2016-07-07 09:03:56

标签: jsf primefaces el methodnotfound

我有以下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

提前致谢

2 个答案:

答案 0 :(得分:0)

如果Holger的解决方案成功,那就好了。

但是:开始使用小写字母开始Java类名是很可怕的。您可以从大写字母开始,JSF将为您管理它,因此您仍然可以使用     听者= “#{myBean.mostrarCentroSeleccionado()}” 如果这不符合您的要求,您可以使用     @ManagedBean(name =“myBean”) 你可以选择你想要的东西而不是myBean。

答案 1 :(得分:0)

问题出现在标签中:

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

该函数必须有“()”因为我没有参加活动。