2016-11-16 4 views
2

WebPage에 대해 3 개의 다른 *.html이 필요합니다. F.e. page_small.html, page_tablet.html, page_desktop.html. 는 어떻게 screensize detext 수 있으며, 화면에 따라 제 3 *.html개찰구에서 페이지의 다른 마크 업 파일을 게재하십시오.

내가 찾은 개찰구 getVariation 중 하나를 제공하지만 난 좋은 설명 또는 예를 찾을 수 없습니다. 그러나 이것이 올바른 방법이며 누군가가 모범을 보여 줄 수 있습니까?

@Override 
public String getVariation() { 
    WebClientInfo info = (WebClientInfo) Session.get().getClientInfo(); 
    ClientProperties p = info.getProperties(); 
    p.setJavaScriptEnabled(true); 
    p.setNavigatorJavaEnabled(true); 
    System.out.println(p.toString()); 
    // Defaults to -1 ???? 
    int width = p.getScreenWidth(); 


    String size; 
    System.out.println("width = "+width); 
    if (width < 1024) { 
     size = "small"; 
    } else if (width < 1280) { 
     size = "medium"; 
    } else { 
     size = "large"; 
    } 
    String s = super.getVariation(); 
    return s == null ? size : s + "_" + size; 

} 

하지만 width= -1

답변

2

확장 된 브라우저 정보를 수집하기 위해 개찰구를 구성하지 않습니다 응용 프로그램 :

protected void init() { 
    getRequestCycleSettings().setGatherExtendedBrowserInfo(true); 
} 
3
당신은 브라우저 정보를 얻을 수 있도록 적어도 하나의 페이지를 렌더링 할 필요가

다음을 다음 페이지를 렌더링 할 때 사용하여 어떤 변형을 사용할 것인지 결정하십시오.

당신은 @svenmeier이 제안 getRequestCycleSettings().setGatherExtendedBrowserInfo(true);를 사용하거나 http://examples7x.wicket.apache.org/ajaxhellobrowser/

에서와 같이 AjaxClientInfoBehavior를 사용하지만 반응 디자인, 즉 CSS 미디어 쿼리를 사용하는 경우 내가 권하고 싶습니다 수 있습니다.

+1

나는 동의한다, CSS 해결책은 더 나은 선택이다! – RobAu

+0

답장을 보내 주셔서 고맙습니다. – greedsin