【问题标题】:Problems in LazyDataModel. Don't reset the first parameterLazyDataModel 中的问题。不要重置第一个参数
【发布时间】:2018-03-11 00:36:40
【问题描述】:

我对 JSF 中的 LazyDataModel(列表)有疑问。问题是下一个:

我有一个带有搜索表单和搜索结果列表的 xhtml。当我继续浏览页面时,我会进行第一次搜索并在此分页列表上显示,例如,在第四页中:

如果我实现了一个新的搜索,在这个新的结果中,第4页的列表收费。参数首先不要在每次新的搜索中重置。为什么?

  1. bean 有注释:@Component@ViewScoped
  2. 带有结果的列表是一个 LazyDataModel 并覆盖了以下方法:loadgetRowKeygetRowData
  3. 版本是:JSF 2.0、PrimeFaces 6.1 和 Spring 4.0.3.RELEASE。

【问题讨论】:

    标签: spring primefaces jsf-2 lazydatamodel


    【解决方案1】:

    问题在于您是否维护相同的数据模型。刷新列表时需要创建一个新的数据模型。

    例如数据模型:

    public class MyDataModel extends LazyDataModel<MyEntity> {
       // my datamodel
    }
    

    还有 bean(在本例中为 CDI)

    @Named
    @ViewScoped
    public class MyBean implements Serializable {
    
        private static final long serialVersionUID = 1L;    
    
        private MyDataModel myDataModel;
    
        //calling this method, a new datamodel is created and populated
        public void search() {
            List myList = new ArrayList(); //load from database
            loadDatamodel(myList);  
        }
    
        private void loadDatamodel(List myList) {               
            myDataModel = new MyDataModel(myList);
        }
    
        public MyDataModel getMyDataModel() {
            return myDataModel;
        }
    }
    

    因此,在每次搜索中,都会创建一个新的数据模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-11
      • 2014-08-24
      • 1970-01-01
      • 2011-10-16
      • 2017-12-12
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      相关资源
      最近更新 更多