我有一个具有自定义数据绑定的属性,如下所示:
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
返回错误或错误代码的正确方法是什么?