我有一个selectOneMenu元素(carType),它在更改它时填充另一个selectOneMenu(制造)元素。这很好用,我每次都会渲染它。
然后我有另一个selectOneMenu(模型),它会立即填充,制造列表会被更改。但这似乎不起作用。我发现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菜单中添加另一个<f:selectItem itemValue="random" itemLabel="random" />
并选择它时,将调用该侦听器。所以,我认为问题可能是没有触发在运行时呈现的元素的侦听器。对可以回答的人有帮助。
答案 0 :(得分:0)
去检查相应的 CDI bean 的范围。如果它是 RequestScoped ,请将范围更改为 ViewScoped 或跨越多个请求的范围。