我试图使用 onChange
selectOneMenu
的事件,但它不起作用并且当我添加 onChange
时该组件不显示属性。
有人能告诉我如何处理 onChange
<p:selectOneMenu>
的事件?
这是我的观点:
<p:selectOneMenu id="service" filterMatchMode="startsWith">
<f:selectItem itemLabel="Selectionner un Service : " />
<f:selectItems value="#{newOpProgramme.listeSevice}" var="service" itemValue="#{service.serviceId}" itemLabel="#{service.serviceNom}"/>
<f:ajax event="change" execute="@this" listener="#{newOpProgramme.serviceChange()}" render="nomCdp"/>
</p:selectOneMenu>
这是
<f:ajax listener>
请求范围bean中的方法:public void serviceChange() {
System.out.println("change");
}
但是,当我更改菜单时,没有打印任何内容。
这是怎么引起的,我该如何解决?
最佳答案
首先,onChange
是错误的事件名称。它是 change
.其次,如果你打算调用HTML属性名,onChange
也是错误的属性名称。它是 onchange
.
回到你的具体问题;标准 JSF <f:ajax>
与 PrimeFaces 组件不兼容。您应该使用 PrimeFaces 自己的 <p:ajax>
反而。
<p:selectOneMenu ...>
...
<p:ajax listener="#{newOpProgramme.serviceChange()}" update="nomCdp" />
</p:selectOneMenu>
请注意,我省略了 event
和 process
属性。他们都已经有了正确的默认值 valueChange
和 @this
分别。也可以看看:
关于ajax - <f :ajax> doesn't work on PrimeFaces component,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18329433/