managedbean实时循环监听器

时间:2015-05-14 09:27:28

标签: jsf-2.2 managed-bean

我使用带有视图作用域的托管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;
        }


    }

}

感谢。

0 个答案:

没有答案