Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 <;f:未为呈现元素调用ajax侦听器_Jsf 2_Primefaces - Fatal编程技术网

Jsf 2 <;f:未为呈现元素调用ajax侦听器

Jsf 2 <;f:未为呈现元素调用ajax侦听器,jsf-2,primefaces,Jsf 2,Primefaces,我有一个selectOneMenu元素(carType),它在更改它时填充另一个selectOneMenu(manufacture)元素。这个效果很好,我每次都会渲染它 然后我有另一个selectOneMenu(model),它会在每次更改制造列表时填充。然而,这似乎不起作用。我看到,carManufacturerChanged根本没有调用侦听器。任何帮助都将不胜感激。代码是: <p:selectOneMenu value="#{createControler.carType}">

我有一个selectOneMenu元素(carType),它在更改它时填充另一个selectOneMenu(manufacture)元素。这个效果很好,我每次都会渲染它

然后我有另一个selectOneMenu(model),它会在每次更改制造列表时填充。然而,这似乎不起作用。我看到,carManufacturerChanged根本没有调用侦听器。任何帮助都将不胜感激。代码是:

<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
for
model
中更改
var
的名称(改为与另一个作用域对象不冲突的名称)。还可以在javascript控制台的网络选项卡中查找clues@kolossus:否,更改变量名称也没有帮助。我在网络标签上没有发现任何可疑的东西。问题是,根本没有调用侦听器。