jim*_*ndy 6 jsf selectonemenu primefaces jsf-2
我有以下(不言自明的)实体关系:
* Manufacturer
* Car (Manufacturer.getCars())
* Tire (Car.getTires())
Run Code Online (Sandbox Code Playgroud)
为myBean
private List<Manufacturer> allManufacturers
private Manufacturer selectedManufacturer
private Car selectedCar
private Tire selectedTire
Run Code Online (Sandbox Code Playgroud)
XHTML
<p:selectOneMenu id="manufacturerSel" value="#{myBean.selectedManufacturer}" converter="#{manufacturerConverter}">
<f:selectItem itemLabel="None" itemValue="#{null}" />
<f:selectItems value="#{myBean.allManufacturers}" />
<p:ajax update="carSel tireSel" />
</p:selectOneMenu>
<p:selectOneMenu id="carSel" value="#{myBean.selectedCar}" converter="#{carsConverter}" disabled="#{empty myBean.selectedManufacturer.cars}">
<f:selectItem itemLabel="None" itemValue="#{null}" />
<f:selectItems value="#{myBean.selectedManufacturer.cars}" />
<p:ajax update="tireSel" />
</p:selectOneMenu>
<p:selectOneMenu id="tireSel" value="#{myBean.selectedTire}" converter="#{tiresConverter}" disabled="#{empty myBean.selectedCar.tires}">
<f:selectItem itemLabel="None" itemValue="#{null}" />
<f:selectItems value="#{myBean.selectedCars.tires}" />
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
p:selectOneMenu应该根据第一个中的选择进行更新p:selectOneMenu带ID 的最后一个tireSel没有正确更新NamingContainercarSel被更新,但在加载的值tireSel很奇怪(似乎是最后的请求是有效的)update="@form"过manufacturerSel编辑 显示使用的EL版本:以下是我的pom.xml的摘录
<dependency>
<groupId>javax.faces</groupId>
<artifactId>javax.faces-api</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.12</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
你基本上需要清除selectedCar价值.你可以用<p:ajax listener>它.
<p:ajax listener="#{myBean.clearSelectedCar}" update="carSel tireSel" />
Run Code Online (Sandbox Code Playgroud)
同
public void clearSelectedCar() {
selectedCar = null; // You might want to clear selectedTire as well.
}
Run Code Online (Sandbox Code Playgroud)
否则旧的选定值仍将保留在豆中,轮胎列表仍将依赖于此.
| 归档时间: |
|
| 查看次数: |
25595 次 |
| 最近记录: |