2016-06-13 2 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 (자바)

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