如何处理@BindUsing注释闭包中发生的错误

时间:2015-03-25 10:51:43

标签: grails grails-domain-class

我有一个具有自定义数据绑定的属性,如下所示:

class User {
    // Custom data binding for the image
    @BindUsing({ obj, source ->
        def imageFile = source['image']
        if (imageFile && imageFile.size > 0) {
            Document image = obj.image ?: new Document()
            image.setFile(imageFile)
            if(!image.save()) {
                throw new Exception('Non localizable message')
            }
            return image
        }
    })
    Document image
    ...
}

如果抛出异常(如我的示例中所示),它将转换为ValidationException,并始终使用typeMismatch的相同通用错误代码:

[com.example.security.User.image.typeMismatch.error,com.example.security.User.image.typeMismatch,user.image.typeMismatch.error,user.image.typeMismatch,typeMismatch.com.example.security.User.image,typeMismatch.image,typeMismatch.com.example.common.Document,typeMismatch]

defaultMessage的{​​{1}}是ValidationException中引发的异常消息。因此,要获取本地化消息,必须以某种方式将@BindUsing注入messageSource并本地化引发的异常消息。

@BindUsing返回错误或错误代码的正确方法是什么?

0 个答案:

没有答案