2016-11-16 26 views
2

可以說我想要3個不同的*.htmlWebPage。 F.E. page_small.html,page_tablet.html,page_desktop.html。 我怎樣才能detext的screensize,並根據屏幕上爲我的3 *.html爲Wicket中的頁面服務不同的標記文件

我發現小門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

你需要使至少一個頁面,以便能夠讓瀏覽信息,然後在呈現以下頁面時使用它來決定使用哪種變體。

您可以使用getRequestCycleSettings().setGatherExtendedBrowserInfo(true);作爲@svenmeier建議或使用AjaxClientInfoBehavior截至http://examples7x.wicket.apache.org/ajaxhellobrowser/

顯示,但如果使用響應式設計,即CSS媒體查詢我建議。

+1

我同意,CSS解決方案是更好的選擇! – RobAu

+0

好的謝謝你的回覆 – greedsin

相關問題