Мне интересно, пытались ли вы сделать мобильную версию контроллера?Grails: мобильная версия контроллера
В настоящее время я расширяю GrailsLayoutDecoratorMapper с помощью своего собственного MobileDecoratorMapper, который применяет layout.mobile.gsp, если обнаружен мобильный телефон, и я хотел бы сделать что-то подобное для некоторых контроллеров. Моя идея - проверить фильтр, если есть мобильная версия контроллера (например, SomethingControllerMobile или SomethingController.mobile.groovy), и если это так перенаправить на него вместо стандартного SomethingController.
Причина в том, что я хотел бы избежать множества утверждений if/else внутри самого контроллера, чтобы проверить, является ли он мобильным, и если так делать что-то по-другому - я не хочу спагетти-кода.
Это имеет смысл для вас, и если вы пытаетесь сделать что-то подобное и каким был ваш подход? Единственное, что приходит мне на ум - проверить файлы в фильтре, но это не похоже на правильное решение, я думаю, что это должно быть возможно сделать на уровне urlmapping, где на основе url grails решает, какой контроллер вызывать
спасибо! но меня особенно интересует то, что у меня есть другая логика для контроллера, а не другой html для представления. Я обрабатываю часть представления, проверяя пользовательский агент и расширитель макета, чтобы я мог загружать отдельные CSS и JS для мобильных устройств, и это все, что мне нужно. Поэтому в основном я хотел бы иметь что-то очень похожее, что здесь, но на уровне фильтра, и вместо того, чтобы говорить, какой вид рендеринга я хотел бы указать, какой контроллер я буду вызывать. В качестве альтернативы я мог бы указать, какое действие я бы вызвал - например, list или listMobile. Имеет ли это смысл? – mkk
@mkk вы можете поместить мобильную логику в закрытие 'withMobileDevice', это не ограничивается просто изменением вида (см. Мой комментарий в коде выше) –
ahh ok - right. Недостаток, который я вижу, заключается в том, что он использует wurfl, и мы хотели бы этого избежать, поэтому мы создали собственный метод обнаружения мобильных телефонов на основе пользовательского агента (да, да, я знаю, что он может быть изменен - не проблема для нас) , Вся логика находится в сервисе и возвращает true/false - будь то мобильный или нет. Считаете ли вы, что было бы легко применить этот плагин вместо использования deviceResolver = wurfl? – mkk