2016-11-16 9 views
2

Скажем, я хочу 3 разных *.html для WebPage. 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

Ваше приложение не настроить Wicket собрать расширенную информацию о браузере:

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

Вам нужно сделать хотя бы одну страницу, чтобы иметь возможность получить информацию браузера, а затем используйте его, показывая следующие страницы, чтобы определить, какие варианты использовать.

Вы можете использовать getRequestCycleSettings().setGatherExtendedBrowserInfo(true); в качестве @svenmeier предложил или использовать AjaxClientInfoBehavior, как показано на http://examples7x.wicket.apache.org/ajaxhellobrowser/

Но я бы рекомендовал, если вы используете адаптивный дизайн, т.е. CSS медиазапросы.

+1

Я согласен, решение CSS - лучший вариант! – RobAu

+0

ok Спасибо за ответ – greedsin