在Wicket中为页面提供不同的标记文件

时间:2016-11-16 13:02:34

标签: wicket wicket-6

假设我想为*.html提供3种不同的WebPage。 F.E. page_small.htmlpage_tablet.htmlpage_desktop.html。 如何识别screensize并根据屏幕投放我的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 个答案:

答案 0 :(得分:3)

您需要呈现至少一个页面才能获取浏览器信息,然后在呈现以下页面时使用它来决定使用哪种变体。

您可以使用getRequestCycleSettings().setGatherExtendedBrowserInfo(true);作为@svenmeier建议,或使用AjaxClientInfoBehavior,如http://examples7x.wicket.apache.org/ajaxhellobrowser/所示

但我建议你使用响应式设计,即CSS媒体查询。

答案 1 :(得分:2)

您的应用程序不会将Wicket配置为收集扩展的浏览器信息:

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