2016-11-16 2 views
2

WebPageには3種類の異なる*.htmlが必要です。 F.e. page_small.html,page_tablet.html,page_desktop.html。 はどのようscreensize detextことができ、画面によっては私の3 *.htmlWicketのページ用に別々のマークアップファイルを提供する

私が見つけたウィケット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

アプリケーションが拡張されたブラウザ情報を収集するために改札を設定しません。そして、あなたは、ブラウザの情報を取得できるようにするには、少なくとも1ページをレンダリングする必要が

protected void init() { 
    getRequestCycleSettings().setGatherExtendedBrowserInfo(true); 
} 
3

と次のページをレンダリングして、使用するバリエーションを決定してください。

あなたは@svenmeierが示唆したようにgetRequestCycleSettings().setGatherExtendedBrowserInfo(true);を使用するか、http://examples7x.wicket.apache.org/ajaxhellobrowser/

に示すようにAjaxClientInfoBehaviorを使用しかし、あなたは応答設計、すなわち、CSSメディアクエリを使用する場合、私はお勧めすることができます。

+1

私は同意すると、CSSソリューションが最適です! – RobAu

+0

返信ありがとう – greedsin

関連する問題