grails - Grails Controller 中使用动态mixins进行异常处理

标签 grails mixins

由于DRY原因,我在Grails 2.3.11 Controller according to this proposal on SO上使用了动态mixins:

class SomeApiController {
    def SomeApiController() {
        SomeApiController.mixin MyControllerMixin
    }
    ...

不幸的是,它不适用于异常处理程序,例如:
class MyControllerMixin {
    ...
    def businessException( BusinessException e ) {
        log.error( "API exception: ${e.message} ${e.errorCode}", e )
        def result = [
            status: 'Failure',
            errorCode: e.errorCode.name()
        ]
        response.status = 400
        render result as JSON
    }
    ...
}

在这种情况下,从某处抛出SomeApiController时,将调用BusinessException中的默认异常处理程序。但是,如果我将处理程序直接放置在 Controller 中,则效果很好,但这显然是我要避免的。

是否有任何解决方法也可以使它正常工作?

最佳答案

参见http://grails.org/doc/latest/guide/theWebLayer.html#controllerExceptionHandling。包括以下内容...

Exception handler methods must be present at compile time. Specifically, exception handler methods which are runtime metaprogrammed onto a controller class are not supported.

关于grails - Grails Controller 中使用动态mixins进行异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26450298/

相关文章:

grails - 在Grails条件中的列组之间使用OR运算符

css - 具有嵌套元素的可重用 block - SCSS

grails - messgaes.properties在IntelliJ中不起作用

Grails 不匹配带有可选参数的 url 模式

java - Grails/hibernate 模式:DuplicateKeyException和NonUniqueObjectException

javascript - 如何使用 Object.assign() 从其他对象引用基础对象属性

css - SASS:如果页面中已经存在具有相同属性的特定值的元素,则 CSS 属性的条件值

scala - 要求类型是可实例化的,即不是特征/抽象

css - 无法使用自定义 CSS Mixins 在 Polymer 1.0 中设置纸抽屉面板的样式

grails - Groovy LDAP搜索请求