假设我想为*.html
提供3种不同的WebPage
。 F.E. page_small.html
,page_tablet.html
,page_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
答案 0 :(得分:3)
您需要呈现至少一个页面才能获取浏览器信息,然后在呈现以下页面时使用它来决定使用哪种变体。
您可以使用getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
作为@svenmeier建议,或使用AjaxClientInfoBehavior
,如http://examples7x.wicket.apache.org/ajaxhellobrowser/所示
但我建议你使用响应式设计,即CSS媒体查询。
答案 1 :(得分:2)
您的应用程序不会将Wicket配置为收集扩展的浏览器信息:
protected void init() {
getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
}