2014-09-20 38 views
0

我有重写负载primefaces lazydatamodel的问题。加载方法中的错误点。我正在使用primefaces 5.0。在JBoss中开发工作室工作7.1Primefaces lazydatamodel加载覆盖不起作用

private LazyDataModel<City> mdlCityList; 
    @PostConstruct 
     public void init() { 
      try { 
       this.mdlCityList = new LazyDataModel<City>() { 
        private static final long serialVersionUID = 1L; 

        @Override 
        public List<City> load(int first, int pageSize, 
          String sortField, SortOrder sortOrder, 
          Map<String, String> filters) { 
         mdlCityList.setRowCount(cityFacade.count(filters)); 
         return cityFacade.getResultList(first, pageSize, sortField, 
           sortOrder, filters); 
        } 
       }; 
       mdlCityList.setRowCount(cityFacade 
         .count(new HashMap<String, String>())); 
      } catch (Exception e) { 
       System.out.println("Exception in CityListProducer " + e); 
      } 
     } 

正如你所看到的,我在执行@覆盖,但它仍然指出:

的方法负载(INT,INT,弦乐,SortOrder的,图) 型新LazyDataModel(){}必须重写或实现 超类型方法的

回答

11

重写在PF 5的方法现在应该看起来

public List<Car> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters) 

代替

public List<Car> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) 

Map<String,Object>代替Map<String,String>在你的方法

看例子http://www.primefaces.org/showcase/ui/data/datatable/lazy.xhtml

+0

对不起,究竟是在2之间的区别你提到?你是否建议我创建一个LazyCityModel类似于showcase中的类?这不可能了吗? – MLDS 2014-09-20 10:31:54

+1

区别在于Map 过滤器和Map 过滤器(Map上的Object和String类型的值)。您应该使用参数类型(例如Map ,而不是Map )来重写。 – 2014-09-20 10:45:54

+0

对不起,我很专注于比较讽刺,我没有看到一件事。谢谢Alex!对不起,我的愚蠢,在那里迷了几个小时。 – MLDS 2014-09-21 05:51:02