如何在selectOneMenu更改上执行managed bean方法?
问题描述:
我有以下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
在此先感谢
答
的问题是在标签:
<p:ajax listener="#{MyBean.function()}"/>
功能必须有 “()” becouse我可不是服用该事件。
答
如果Holger的解决方案可行, 没关系。
但是:用小写字母开始Java类名开始是非常可怕的。您可以从大写字母开始,JSF将为您管理它,因此您仍然可以使用 listener =“#{myBean.mostrarCentroSeleccionado()}” 如果这不符合您的要求,可以使用 @ManagedBean(name = “myBean”) 而不是myBean,你可以选择你想要的东西。
+0
如果您对PrimeFaces有一点了解,您会明白这里的重点在于以下两种选择之一。 1-在xhtml标记或属性处丢失或错误。 2-执行方法存在的问题 其他任何事情只是为了将您置于上下文中。这不相关或重要。 – Termosfera
如果你的听众不接受事件,你应该使用'listener =“#{myBean.mostrarCentroSeleccionado()}”' – Holger
完整的代码将使这个问题无法访问......实际上@Holger answer对我有效 – Termosfera