【发布时间】:2014-05-29 15:17:13
【问题描述】:
我想对primefaces 上的示例数据表做一点补充。我想添加另一列来删除一些数据。如果汽车的颜色是否为白色,则设置此条件。我正确呈现了删除按钮,并且检查了是否正在调用 actionListener 并从列表中删除汽车。但是,即使它反映在列表中,数据表也不会更新。每当我对数据表进行排序时,列表都会更新。我希望它在我按下删除后立即更新。这是我所拥有的。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<h:form>
<p:dataTable id="carTable" var="car" value="#{dtBasicView.cars}">
<f:facet name="header">
Car Table
</f:facet>
<p:column headerText="Id" sortBy="#{car.id}">
<h:outputText value="#{car.id}" />
</p:column>
<p:column headerText="Year" sortBy="#{car.year}">
<h:outputText value="#{car.year}" />
</p:column>
<p:column headerText="Brand" sortBy="#{car.brand}">
<h:outputText value="#{car.brand}" />
</p:column>
<p:column headerText="Color" sortBy="#{car.color}">
<h:outputText value="#{car.color}" />
</p:column>
<p:column headerText="Delete Option">
<p:commandLink actionListener="#{dtBasicView.deleteCar(car)}"
update="carTable" rendered="#{car.isWhite}" value="Delete" ajax="true">
<h:outputText value="Delete" />
</p:commandLink>
</p:column>
</p:dataTable>
</h:form>
</h:body>
</html>
这里是java部分。
@ManagedBean(name="dtBasicView")
@ViewScoped
public class BasicView implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private Car selectedCar;
private List<Car> cars;
private List<Car> oneHundredCars;
private int numberOfcars=0;
@ManagedProperty("#{carService}")
private CarService service;
@PostConstruct
public void init() {
oneHundredCars = service.createCars(10000);
}
public void setNumberOfcars(String num) {
this.numberOfcars = Integer.parseInt(num);
cars = oneHundredCars.subList(0, numberOfcars);
}
public List<Car> getCars() {
return cars;
}
public void setService(CarService service) {
this.service = service;
}
public Car getSelectedCar() {
return selectedCar;
}
public void setSelectedCar(Car selectedCar) {
this.selectedCar = selectedCar;
}
public boolean getIsEmpty() {
return cars == null || cars.isEmpty();
}
public void deleteCar(Car car) {
cars.remove(car);
}
}
【问题讨论】:
-
您的数据表周围有
<h:form>吗? -
是的,我只是没有发布它。我会更新的。
标签: jsf primefaces datatable xhtml commandlink