Grails:控制器的移动版本

时间:2012-01-13 12:39:19

标签: grails controller

我想知道你是否曾尝试制作控制器的移动版本?

现在我正在使用自定义MobileDecoratorMapper扩展GrailsLayoutDecoratorMapper,如果检测到手机,我会应用layout.mobile.gsp,我想为某些控制器做类似的事情。我的想法是检查过滤器是否存在移动版本的控制器(例如SomethingControllerMobile或SomethingController.mobile.groovy),如果是,则重定向到它而不是默认的SomethingController。

原因是我想避免控制器内部的很多if / else语句来检查它是否是移动的,如果是这样做的话也不同 - 我不想要意大利面条代码。

对你来说是否有意义,如果是这样,你试图做类似的事情,你的方法是什么?我唯一想到的是检查过滤器中的文件,但它看起来不是一个合适的解决方案,我认为这应该可以在urlmapping级别完成,其中基于url grails决定哪个控制器到调用

1 个答案:

答案 0 :(得分:2)

Spring Mobile plugin允许您以相当优雅的方式有条件地为移动设备执行控制器代码

def list = {
  def view = "list"
  withMobileDevice {
        // mobile-specific logic goes here, in this simplistic example we
        // just change the view, but you can do anything you like....
        view = "mobileList"
  }
 render(view: view, model: [list: listInstance])
}