ComboBox:初始项目的延迟加载

问题描述

是否可以延迟加载初始组合框内容,例如当您第一次打开组合框而不是设置 DataProvider 时获取项目?

例如,使用 CallbackDataProvider,您会在组件显示在 Web 浏览器中后立即获得第一个回调。

我们使用组合框来选择内容管理系统中的页面版本。由于版本列表非常占用 cpu,我们只希望在用户实际使用组合框时触发它。

这是我的 CallbackProvider。回调似乎与打开组合框无关,只与分页有关。

CallbackDataProvider callbackProvider = new CallbackDataProvider<>(
                
                query-> 
                    { 
                        /* Get the first 10 versions of this page */
                       
                        if (location != null) {
                            
                        
                            try {
                                Node page;
                                page = MgnlContext.getJCRSession(RepositoryConstants.WEBSITE)
                                        .getNode(location.getNodePath());
                                
                                List versions = pageHistory.getAvailabLeversionInfoList(page)
                                        .stream().limit(10).collect(Collectors.toList());;
                                
                                return versions.stream();
                                
                            } catch (RepositoryException e) {
                                // Todo Auto-generated catch block
                                e.printstacktrace();
                            }  
                        }
                        
                        return null; 
                        
                    },query->  
                    { 
                        /* Version count */
                        
                        if (location != null) {
                        
                            Node page;
                            try {
                                page = MgnlContext.getJCRSession(RepositoryConstants.WEBSITE)
                                        .getNode(location.getNodePath());
                                
                                List versions = pageHistory.getAvailabLeversionInfoList(page)
                                        .stream().limit(10).collect(Collectors.toList());;
                                
                                return versions.size(); 
                                
                                
                            } catch (RepositoryException e) {
                                // Todo Auto-generated catch block
                                e.printstacktrace();
                            }
                        }
                        
                        return 0; 
                        
                        
                        
                    }    
                         
                    );        

这是在 vaadin 8 中。任何帮助将不胜感激。 亲切的问候, 托马斯

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)