我尝试使用selectOneMenu的onChange事件,但它不起作用,当我添加onChange属性时,组件不会显示.
有人能告诉我如何处理< p:selectOneMenu>的onChange事件?
这是我的观点:
<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监听器>请求范围bean中的方法:
public void serviceChange() { System.out.println("change"); }
这是怎么造成的,如何解决?
首先,onChange是错误的事件名称.这是改变.其次,如果您打算调用HTML属性名称,onChange也是错误的属性名称.它正在改变.
回到你的具体问题;标准的JSF< f:ajax>与PrimeFaces组件不兼容.您应该使用PrimeFaces自己的<p:ajax>
.
<p:selectOneMenu ...> ... <p:ajax listener="#{newOpProgramme.serviceChange()}" update="nomCdp" /> </p:selectOneMenu>
请注意,我省略了事件和流程属性.它们都分别具有valueChange和@this的正确默认值.
也可以看看:
> What values can I pass to the event attribute of the f:ajax tag?
> Understanding PrimeFaces process/update and JSF f:ajax execute/render attributes