zk中解决listbox延迟加载问题

页面代码:


                                                                                             sizable="false">
                                                                                                     sort="false" align="left" width="100%" />
                                            
            

                
                                                

                                            

                              
 

页面代码应用了 Listbox 控件, 蓝色部分,setModel 体式格式绑定命据, 然则发明, 在迁移转变中呈现了数据加载的延迟现象。

为了解决这个延迟加载现象,在页面注释掉了蓝色部分,采取了在 Java 中创建组建添加到 ListBox 中的体式格式 (如下红色部分), 解决了这个延迟的题目 。

    /**
     * 显示角色详细信息
     *
     * @param roleId
     */
    public void roleDetail() {
        Long roleId = (Long) roleListbox.getSelectedItem().getValue();
        role = roleService.queryRoleByRoleId(roleId);
        saveButton.setVisible(true);
        addRelButton.setVisible(true);
        
        // 创建资源菜单树
        this.createMenuTree();
        // 查询控件资源
        List resLi = resourceService
                .queryAllValidComponentResources();
        compResListBox.setModel(new BindingListModelList(resLi, true));
        final List resLiRole = resourceService
                .queryAllValidComponentResourcesByRoleId(roleId);

        Listbox listResult = (Listbox) self.getFellowIfAny("compResListBox");
        listResult.getItems().clear();
        listResult.setCheckmark(true);
        listResult.setMultiple(true);
        listResult.setRows(resLi.size());
        
        for(ResourceVO rvo : resLi){            
            final Listitem li = new Listitem();
            li.setParent(listResult);
            li.setValue(rvo.getId());
            
            Listcell cell = new Listcell();
            li.appendChild(cell);
            li.appendChild(new Listcell(rvo.getName()));            
        }

        compResListBox.setItemRenderer(new ListitemRenderer() {

            @Override
            public void render(Listitem arg0, Object arg1) throws Exception {
                ResourceVO vo = (ResourceVO) arg1;
                arg0.setLabel(vo.getName());
//                arg0.setId(String.valueOf(vo.getId()));
                arg0.setValue(vo.getId());
                ResourceVO res = new ResourceVO();
                res.setId(vo.getId());
                if (resLiRole.contains(res)) {
                    arg0.setSelected(true);
                }
            }
        });

        // List itemLi = compResListBox.getItems();
        // for (Listitem item : itemLi) {
        // ResourceVO res = new ResourceVO();
        // res.setId(Long.valueOf(item.getValue().toString()));
        // if (resLiRole.contains(res)) {
        // item.setSelected(true);
        // }
        // }
        
        
        reloadComponent("compResListBox");
        //reloadComponent("roleGrid");
        Textbox roleName = (Textbox) self.getFellow("roleName");
        roleName.setValue( role.getName() );
        
        Textbox desc = (Textbox) self.getFellow("description");
        desc.setValue( role.getDescription() );

        Textbox seq = (Textbox) self.getFellow("seq");
        seq.setValue( role.getSeq() );
 
        refreshRoleRelationDesc(role);
        
        Listbox validListbox = (Listbox) self.getFellow("validListbox");
        if(role.isValid()) {
            validListbox.setSelectedIndex(1);
        } else {
            validListbox.setSelectedIndex(2);
        }
    }

你可能感兴趣的:(随记)