我想在下拉列表中选择一个值时刷新我的表格,在表格中我想调用一个以所选值作为参数的函数。
我选择的值必须作为参数加入函数calculateAveragePrice
。
这是我与所有不同地区的合作。
<p:selectOneMenu id="list" value="#{regionController.region}">
<f:selectItems value="#{regionController.regions}" var="region" itemLabel="#{region.name}"/>
<f:ajax execute="list" render="myTable" />
</p:selectOneMenu>
这是我要刷新的表格:
<table id="myTable" class="table table-responsive">
<tr>
<td>#{msg.averagePrice}:</td>
<td>#{flightController.calculateAveragePrice(regionController.region)}</td>
</tr>
</table>
RegionController bean:
@Named
@RequestScoped
public class RegionController {
@Inject
RegionService regionService;
private Region region;
private Collection<Region> regions;
@PostConstruct
public void initialize() {
regions = regionService.findAll();
}
public Region getRegion() {
return region;
}
public void setRegion(Region region) {
this.region = region;
}
public void setRegions(Collection<Region> regions) {
this.regions = regions;
}
public Collection<Region> getRegions() {
return regions;
}
}
答案 0 :(得分:1)
如果我做对了,那只是一个设计问题。
您可以在region
内创建一个名为flightController
的属性。
然后,你会:
<p:selectOneMenu id="list" value="#{FLIGHTCONTROLLER.region}">
<f:selectItems value="#{regionController.regions}" var="region" itemLabel="#{region.name}"/>
<f:ajax execute="list" render="myTable" />
</p:selectOneMenu>
现在,您不必将区域作为参数传递,因为FlightController已经通过ajax设置了该属性。
你的方式是,你无缘无故地设置了regionController.Region。