我使用带有视图作用域的托管bean,因为我需要它(对于ap:带有延迟和选择模式的数据表),但是我想在渲染响应阶段对这个托管bean做一些事情,是有一个方便的方法吗?
我需要一个作用域来保存一个lazyDataModel,但我注意到每次执行一个请求(选择计数)时都会多次调用rowCount方法。
所以我决定保存请求的结果。但是,如果我添加数据并使用ajax刷新数据表,则由于范围,行计数仍包含相同的结果。我使用布尔值来知道rowcount方法是否已经执行了,每次添加或删除数据时我都可以将此布尔值设置为false但是如果我能做到渲染响应阶段,那么对我来说会更方便。 / p>
@ManagedBean
@ViewScoped
public class ListBean {
protected MyLazyDataModel myLazyDataModel = new MyLazyDataModel();
public MyLazyDataModel getMyLazyDataModel() {
return myLazyDataModel;
}
public void reloadList() {
this.reloadList = true;
}
protected class MyLazyDataModel extends LazyDataModel{
private int rowCount ;
@Override
public List load(int first, int pageSize, String sortField,
SortOrder sortOrder, Map<String, Object> filters) {
...
}
@Override
public Object getRowKey(Type object) {
...
}
@Override
public Type getRowData(String rowKey) {
...
}
@Override
public int getRowCount() {
if( reloadList ) {
this.rowCount = getDao().getRowCount().intValue();
reloadList = false;
}
return rowCount;
}
}
}
感谢。