2016-06-13 1 views
1

Я ищу способ для AJAX ленивой загрузки панели без необходимости добавлять дополнительные файлы (например, новый файл Class и .html). Я знаком с использованием AjaxLazyLoadPanel. Идея заключалась в том, чтобы быстро обернуть медленную часть загрузки страницы с ленивой загрузкой без необходимости писать много кода и без необходимости разворачивать разметку в отдельные файлы. Есть ли решение для этого, которое уже доступно?Wicket: AjaxLazyLoadPanel без дополнительных файлов

Пример: Я в WebPage, и я хочу часть страницы для ленивой нагрузки. Одно из возможных решений может работать как тег wicket:container.

<body> 
    <h1>The DIV Below Is Lazy</h1> 
    <wicket:lazy wicket:id="lazyLoadMe"> 
    <div wicket:id="slowLoadingRepeater"> 
     <div wicket:id="item">[stuff goes here]</div> 
    </div> 
    </wicket:lazy> 
    <div wicket:id="loadRightAway"></div> 
</body> 

ответ

2

Вы, вероятно, ищет Фрагмент. В следующем примере показано, как добавить экземпляр AjaxLazyLoadPanel и поместить контент с той же разметки, пока вам не нужно создавать какой-либо другой класс или файл разметки, чтобы разделить содержимое. Полный рабочий пример доступен на https://stash.twinstone.org/projects/WISTF/repos/wicket-examples-6.x/browse

AjaxLazyLoadPanelPage (Java)

public class AjaxLazyLoadPanelPage extends WebPage { 

private static final long serialVersionUID = 1L; 

/** 
* @param parameters 
*/ 
public AjaxLazyLoadPanelPage(PageParameters parameters) { 
    super(parameters); 
    add(new AjaxLazyLoadPanel("lazyLoadedPanel") { 

     private static final long serialVersionUID = 1L; 

     @Override 
     public Component getLazyLoadComponent(String componentId) { 
      return new Fragment(componentId, "lazyContentFragment", AjaxLazyLoadPanelPage.this) 
      .add(new Label("text", Model.of("real content"))); 
     } 
    }); 
} 

} 

AjaxLazyLoadPanelPage.html (разметки)

<body xmlns:wicket="http://wicket.apache.org"> 

<div> 
    <h1>Ajax Laxy Load Panel Example</h1> 
    <div wicket:id="lazyLoadedPanel">This is a lazy loaded panel</div> 
</div> 

<wicket:fragment wicket:id="lazyContentFragment"> 
    If you see this content, the lazy laoded panel has been replaced with its <span wicket:id="text">[data]</span> after lazy loading. 
</wicket:fragment> 

</body> 
+1

Это именно то, что я нуждаясь! Я ценю рабочий пример. – JeredM