<f:ajax>不适用于PrimeFaces组件

wat*_*tou 6 ajax events jsf primefaces

我试图使用onChange事件selectOneMenu,但它不起作用,当我添加onChangeattribue 时,组件不会显示.

有人能告诉我如何处理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>
Run Code Online (Sandbox Code Playgroud)

这是<f:ajax listener>请求范围bean中的方法:

public void serviceChange() {
    System.out.println("change");
}
Run Code Online (Sandbox Code Playgroud)

但是,当我更改菜单时,没有打印任何内容.

这是怎么造成的,我该如何解决?

Bal*_*usC 26

首先,onChange是错误的事件名称.是的change.其次,如果您打算调用HTML属性名称,onChange也是错误的属性名称.是的onchange.

回到你的具体问题; 标准JSF <f:ajax>与PrimeFaces组件不兼容.你应该使用PrimeFaces <p:ajax>而不是.

<p:selectOneMenu ...>
    ...
    <p:ajax listener="#{newOpProgramme.serviceChange()}" update="nomCdp" />
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

请注意,我省略了eventprocess属性.他们都已经右边默认值valueChange,并@this分别.

也可以看看: