我是JSF的新手,我正在使用primefaces-2.2.RC2。 我有一個commandButton,當我點擊我希望它填充使用lazyLoading(我的工作基於primefaces展示)的dataTable。 當我點擊commandButton時,數據未加載。Primefaces上的懶加載+命令按鈕
這一塊我的代碼:
<p:commandButton value="Search"
action="#{tableBean.search()}"
update="carList"
/>
<p:dataTable id="carList"
var="car"
value="#{tableBean.lazyDataModel}"
paginator="true"
rows="10"
dynamic="true"
lazy="true"
paginatorPosition="bottom"
>
我的豆
安德:
@ViewScoped
public class TableBean {
LazyDataModel<Car> lazyDataModel;
public TableBean() {
lazyDataModel = new LazyDataModel<Car>() {
@Override
public List<Car> load(int i, int i1, String string, boolean bln, Map<String, String> map) {
return new ArrayList<Car>();
}
};
}
public LazyDataModel<Car> getLazyDataModel() {
return lazyDataModel;
}
public void search() {
lazyDataModel = new LazyDataModel<Car>() {
@Override
public List<Car> load(int first, int pageSize, String sortField,boolean sortOrder, Map<String, String> filters) {
return fetchLazyData(first, pageSize);
}
@Override
public void setRowIndex(int rowIndex) {
setPageSize(10);
if (rowIndex == -1 || getPageSize() == 0) {
super.setRowIndex(-1);
} else {
super.setRowIndex(rowIndex % getPageSize());
}
}
public List<Car> fetchLazyData(int first, int pageSize) {
System.out.println("Loading the lazy car data between " + first + " and " + (first + pageSize));
List<Car> lazyCars = new ArrayList<Car>();
for (int i = 0; i < pageSize; i++) {
int offset = i + first;
lazyCars.add(new Car("Model_" + offset, (int) (Math.random() * 60 + 1960), "Brand_" + offset, "Color_" + offset));
}
return lazyCars;
}
};
lazyDataModel.setRowCount(10000);
}
}
更新:我descovered我有綁定我的DataTable,並在我的豆我要調用loadLazyData()函數。
你爲什麼要使用舊的beta版本? PrimeFaces 2.2已於2年多前完成。 – BalusC
這是我將工作的項目的非功能性需求。顯然他們使用一個使用這個版本的primefaces的定製Tomcat。 –
你使用'@ ManagedBean'註解嗎?或寫在你的faces-config文件(jsf1.2舊式/學校)? – danRod