2017-11-22 3 views
0

Wicket에서 ListView을 게으른로드 할 수 있습니까? 내 말은 populateItem 안에 Item 0을로드하고 표시 할 수 있으며 Item 0이 렌더링되면 Item 1으로 진행한다는 것을 의미합니다. 현재 모든 ItemspopulateItem 내부에서 처리 될 때까지 기다려야합니다.Wicket lazy load a ListView

+0

'AjaxLazyLoadPanel'을 사용하여 항목을 렌더링 할 수 있습니까? – RobAu

답변

3

RobAu가 언급 한대로 코딩시 최소한의 변경으로 AjaxLazyLoadPanel (wicket-extension)을 사용하여이 작업을 수행 할 수 있습니다. 모델로 Item이 있다고 가정 해 보겠습니다.

 List<Item> itemList = new ArrayList<>(); 
     itemList.add(new Item()); 
     itemList.add(new Item()); 

     ListView<Item>itemListView = new ListView<Item>("itemListView",ItemList) { 
      @Override 
      protected void populateItem(final ListItem<Item> listItem) { 
      listItem.add(new AjaxLazyLoadPanel("ViewItemPanel") { 
       @Override 
       public Component getLazyLoadComponent(String s) { 
        // Add a seperate panel if you are listing out many values 
        return new ItemPanel(s,listItem.getModelObject()); 
       } 
      }); 
      } 
     }; 
     add(itemListView); 

ItemPanel 많은 정보를 표시해야하는 경우 구성 요소를 분리해야합니다.

+0

이것이 작동하는 동안 이상한 결과를 얻습니다. 예를 들어 문자열과 레이블이 먼저 렌더링되고 나중에 이미지가 렌더링되어 내 웹 사이트의 흐름이 손상됩니다. – greedsin

관련 문제