2017-11-22 15 views
0

WicketでListViewを遅延ロードすることはできますか? Item 0をロードして表示し、Item 0がレンダリングされた場合は、Item 1に進むことができます。現在、私はすべてItemspopulateItemの内部で処理されるまで待つ必要があります。Wicket lazy load a ListView

+0

'AjaxLazyLoadPanel'sを使ってアイテムをレンダリングできますか? – 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

関連する問題