将自己的错误消息填充到grails域错误中

问题描述 投票:2回答:2

我想知道,是否(以及如何)可以在验证之后(或之前)向域对象添加一些自己的错误消息。

我的目的是,我必须检查表单中的上载文件是否包含某些属性(图像大小等),如果出现问题,我想添加一条错误消息,该消息显示在通常的grails中。“。hasErrors “循环。

(而且我认为我需要有可能在某些跨域检查失败中表达错误……)

谢谢,苏珊。

grails
2个回答
3
投票

您可以按照errors docs中的说明添加自定义验证错误,如下所示:

class SampleController {

def save() {
  def sampleObject = new SampleObject(params)
  sampleObject.validate()

  if(imageSizeIsTooBig(sampleObject)) {
    sampleObject.errors.rejectValue(
      'uploadedFile',
      'sampleObject.uploadedFile.sizeTooBig'
    )    
}

private def imageSizeIsTooBig(SampleObject sampleObject) {
  // calculation on sampleObject, if size is too big
}

也许,您甚至可以用custom validator处理您的案件,因此您可以一次调用validate()并确保已满足所有约束。


0
投票

这是一个带有自定义域错误的真实示例:

def signup(User user) {
    try {
        //Check for some condition
        if (!params.password.equals(params.passwordRepeat)) {
            //Reject the value if condition is not fulfilled
            user.errors.rejectValue(
                    'password',
                    'user.password.notEquals',
                    'Default message'
            )
            //Throw an exception to break action and rollback if you are in a service
            throw new ValidationException('Default message', user.errors)
        }
        //Continue with your logic and save if everything is ok
        userService.signup(user)
    } catch (ValidationException e) {
        //Render erros in the view
        respond user.errors, view:'/signup'
        return
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.