model-view-controller - 您如何在不同的 grails Controller 中共享常用方法?

标签 model-view-controller grails grails-controller

目前当我需要分享一个像 processParams(params) 这样的方法时在不同的 Controller 之间,我使用继承或服务。
这两种解决方案都有一些不便之处:

  • 使用继承,您不能使用多重继承,这意味着您需要将所有 Controller 实用程序方法放在一个地方。此外,grails 中存在一个错误,在开发模式下未检测到 Base Controller 类中的任何代码更改(您需要重新启动应用程序)
  • 使用服务,您无法访问所有注入(inject)的属性,如参数、 session 、刷新...

  • 所以我的问题是:有没有其他方法可以使用多个 Controller 可以访问的一些常用方法?

    最佳答案

    我喜欢的一个选择是将常用方法编写为一个类别,然后根据需要将其混合到 Controller 中。它比继承提供了更多的灵 active ,可以访问参数之类的东西,并且代码简单易懂。

    这是一个小例子:

    @Category(Object)
    class MyControllerCategory {
        def printParams() {
            println params
        }
    }
    
    @Mixin(MyControllerCategory)
    class SomethingController {
    
        def create = {
            printParams()
            ...
        }
    
        def save = {
            printParams()
        }
    }
    

    关于model-view-controller - 您如何在不同的 grails Controller 中共享常用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4195492/

    相关文章:

    Tomcat 7.0.57 上的 Grails 3.3.0

    hibernate - 将 ORM 与严格的 MVC 框架结合使用

    grails - Grails 2.0.0的就地插件

    java - Spring MVC : One step view or Two Step View?

    grails - IntelliJ IDEA Grails 3.0 错误

    json - 由于日期值,Grails LazyMap 到 POJO 的转换失败

    unit-testing - Grails:具有域类的单元测试 Controller 方法

    grails - 安全grails spring安全 Controller

    php - 如何使用Slim Router在PHP MVC中向用户显示错误消息?

    c# - Request.IsAjaxRequest 不工作 mvc