Jsf 2 <;f:未为呈现元素调用ajax侦听器
我有一个selectOneMenu元素(carType),它在更改它时填充另一个selectOneMenu(manufacture)元素。这个效果很好,我每次都会渲染它 然后我有另一个selectOneMenu(model),它会在每次更改制造列表时填充。然而,这似乎不起作用。我看到,carManufacturerChanged根本没有调用侦听器。任何帮助都将不胜感激。代码是:Jsf 2 <;f:未为呈现元素调用ajax侦听器,jsf-2,primefaces,Jsf 2,Primefaces,我有一个selectOneMenu元素(carType),它在更改它时填充另一个selectOneMenu(manufacture)元素。这个效果很好,我每次都会渲染它 然后我有另一个selectOneMenu(model),它会在每次更改制造列表时填充。然而,这似乎不起作用。我看到,carManufacturerChanged根本没有调用侦听器。任何帮助都将不胜感激。代码是: <p:selectOneMenu value="#{createControler.carType}">
<p:selectOneMenu value="#{createControler.carType}">
<f:selectItem itemLabel="Select Car Type" itemValue="" />
<f:selectItems value="#{createControler.carTypeList}" var="carType"
itemLabel="#{carType}" itemValue="#{carType}"/>
<f:ajax event="change" listener="#{createControler.carTypeChanged}" render="manufacture"/>
</p:selectOneMenu><br></br><br></br>
<p:selectOneMenu value="#{createControler.carManufacturer}" id="manufacture">
<f:selectItem itemLabel="Select Car Manufacturer" itemValue="" />
<f:selectItems value="#{createControler.carManufacturerList}" var="carManufacturer"
itemLabel="#{carManufacturer.manufacture}" itemValue="#{carManufacturer.manufacture}"/>
<f:ajax event="change" listener="#{createControler.carManufacturerChanged}" render="model" />
</p:selectOneMenu><br></br><br></br>
<p:selectOneMenu value="#{createControler.carModel}" id="model">
<f:selectItem itemLabel="Select Car Model" itemValue="" />
<f:selectItems value="#{createControler.carModelList}" var="carModel"
itemLabel="#{carModel.model}" itemValue="#{carModel.model}"/>
</p:selectOneMenu><br></br><br></br>
编辑:当我在carManufacturer菜单中添加另一个
并选择它时,就会调用侦听器。所以,我认为问题可能是在运行时呈现的元素没有触发侦听器。可能对能够回答问题的人有所帮助。去检查相应的CDIBean的范围。如果是请求范围,请将范围更改为查看范围,或者更改为跨多个请求的范围。是否可以尝试使用
而不是
?对于制造商
:
,监听器签名是公共汽车制造商更改(最终AjaxBehaviorEvent事件){…}
@predFragmaric:感谢您的评论。我试过了,没用。这只是猜测,但试着在f:selectItems
formodel
中更改var
的名称(改为与另一个作用域对象不冲突的名称)。还可以在javascript控制台的网络选项卡中查找clues@kolossus:否,更改变量名称也没有帮助。我在网络标签上没有发现任何可疑的东西。问题是,根本没有调用侦听器。