当前位置: 首页 > 知识库问答 >
问题:

Primefaces上的延迟加载命令按钮[重复]

龙博
2023-03-14

我是JSF的新手,我正在使用primefaces-2.2.RC2。我有一个commandButton,当我单击它时,我希望它填充一个使用lazyLoading的数据表(我的工作是基于primefaces showcase)。当我点击commandButton时,数据没有被加载。

这是我的一段代码:

<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);
    }
}

更新:我发现我必须绑定我的数据表,并且在我的bean上我必须调用loadLazyData()函数。

共有1个答案

贝浩歌
2023-03-14

我发现我必须将我的数据表与我的bean绑定,并且在我的bean上,我必须调用loadLazyData()函数来通知表加载它。

 类似资料:
  • 问题是,每次尝试筛选表时,我的 实现中被重写的方法 都会被调用两次。 我的<代码>LazyDataModel<代码>实现: 我的xhtml视图: 和控制器

  • 我正在使用JSF2。0和PrimeFaces3。1和3。1用于业务逻辑。我试图使用DataTable—延迟加载。但它给了我以下的错误。请帮忙。 发生错误:

  • 我想导出一个在报表生成期间具有LazyLoad数据模型的数据表(带分页)。 问题:当我导出时,报告从数据库逐页生成,然后导出到Excel/PDF,这会消耗更多时间。我想通过跳过逐页生成数据集来在单个数据库访问中获取它。 我生成了如下代码片段: JSF: 受管Bean: 数据模型: 注: < li >没有语法错误。 < li >所有自定义类型类都已定义。 如何通过跳过逐页生成记录来获得Excel报表

  • 描述 (Description) 延迟加载可应用于图像,背景图像和淡入效果,如下所述 - 对于图像 要在图像上使用延迟加载,请按照给定的步骤进行操作 - 使用data-src属性而不是src属性来指定图像源。 将类lazy添加到图像。 <div class = "page-content"> ... <img data-src = "image_path.jpg" class = "l

  • 我有一个简单的页面: 而中的不起作用,只是刷新页面。但是外面的那个正在工作。 如果我以这种方式更改和: 内部的就像一个符咒。 有人知道为什么? 是虫子吗? 我在 玻璃鱼3.1.2 JSF 2.1.11(Mojarra) PrimeFaces 3.4-快照

  • 问题内容: 如果这是完全相同的内容,请纠正我,我知道这个话题经常被讨论,但是找不到确切的答案。 问题: 在MVC Web应用程序中处理Hibernate对象的最佳实用解决方案是什么? 细节: 我正在使用Hibernate,并希望在可能的情况下利用延迟加载。 我正在使用MVC风格的Webapp。 我讨厌获得延迟加载初始化异常。 我讨厌不得不在事务之间重新连接Hibernate对象。 选项: 渴望装载