使用网格更改Vaadin 8延迟加载的默认限制

时间:2018-02-19 00:39:10

标签: java aws-lambda vaadin lazy-loading vaadin8

我已经在Vaadin 8中实现了网格实现的延迟加载。

我的后端运行在AWS Lambda上,响应对象的限制为6 MB。

延迟加载实现给服务器提供了默认限制(40),这使我的程序崩溃,错误为“body太大”。

我想在Vaadin中更改延迟加载的默认限制。

以下是我的代码段:

grid.setDataProvider((sortorder, offset, limit) -> {

            try {
                return billingClient.getInvoiceListByCriteria(criteria, (long) offset, (long) limit).stream();
            } catch (Exception e) {
                logger.error("Exception while getInvoiceListByCriteria", e);
                return null;
            }
        }, () -> {

            try {
                totalInvoices = billingClient.getCountInvoiceListByCriteria(criteria).longValue();
                Integer count = totalInvoices.intValue();
                if (count == 0)
                    Notification.show("No Invoices found.", Notification.Type.HUMANIZED_MESSAGE);
                return count;
            } catch (Exception e) {
                logger.error("Error occured while getting count calling getCountInvoiceListByCriteria", e);
                Notification.show("Error while getting count", Notification.Type.ERROR_MESSAGE);
                return null;
            }

        });

2 个答案:

答案 0 :(得分:1)

奇怪的是40行大于6MB。

从未尝试过,但您可以使用grid.getDataCommunicator()。setMinPushSize(size)来设置最小项目数。它已经初始化为40,所以我猜你可以降低它以防止你的反应变得很大。但是" min"在名称中表明其他因素也可能影响它,因此您需要对其进行彻底测试。

答案 1 :(得分:-1)

通过手动更改限制值来解决问题。

grid.setDataProvider((sortorder, offset, limit) -> {

        try {
            limit=20;
            return billingClient.getInvoiceListByCriteria(criteria, (long) offset, (long) limit).stream();
        } catch (Exception e) {
            logger.error("Exception while getInvoiceListByCriteria", e);
            return null;
        }
    }, () -> {

        try {
            totalInvoices = billingClient.getCountInvoiceListByCriteria(criteria).longValue();
            Integer count = totalInvoices.intValue();
            if (count == 0)
                Notification.show("No Invoices found.", Notification.Type.HUMANIZED_MESSAGE);
            return count;
        } catch (Exception e) {
            logger.error("Error occured while getting count calling getCountInvoiceListByCriteria", e);
            Notification.show("Error while getting count", Notification.Type.ERROR_MESSAGE);
            return null;
        }

    });

根据我设定的限制调整偏移量。