Есть ли в JSF более элегантный способ переключения шаблонов на основе пользовательского агента? - PullRequest
2 голосов
/ 22 сентября 2011

У нас есть веб-приложение, написанное с использованием JSF, и мы пытаемся добавить в него мобильную версию.В идеале у нас должна быть отдельная папка с шаблонами, CRUD и ресурсами (например, jQuery Mobile), и наша целевая страница сможет выбрать подходящий шаблон на основе атрибута user-agent заголовка.

Oneможно было бы использовать скриптлет и перенаправить на mobile / index.xhtml - конец истории, но людям не нравятся скриптлеты: D

Другой способ - обернуть содержимое целевой страницы (включаяшаблонные части) в PanelGroup с Rendered = "# {mobileDetector.isMobile ()}", с помощью компонента поддержки выполняет то, что скриптлет сделал бы в противном случае.Но я думаю, что это отчасти наносит вред шаблонам, плюс это не относится к разделу заголовка.

Итак, есть ли лучший способ?

1 Ответ

3 голосов
/ 22 сентября 2011

Либо используйте отдельный поддомен, например, mobile.example.com для мобильных пользователей и (www.) Example.com для пользователей настольных компьютеров, и / или прослушайте пользовательский агент.Доступны открытые API:

В качестве альтернативыВы можете использовать CSS, чтобы скрыть / изменить части разметки HTML на основе медиа-типа .

<link rel="stylesheet" href="css/desktop.css" media="screen,projection">
<link rel="stylesheet" href="css/mobile.css" media="handheld">
<link rel="stylesheet" href="css/print.css" media="print">
<link rel="stylesheet" href="css/iphone.css" media="all and (max-device-width: 480px)">
<link rel="stylesheet" href="css/ipad-portrait.css" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:portrait)">
<link rel="stylesheet" href="css/ipad-landscape.css" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:landscape)">
...