【问题标题】:Grails validation issue on multi-domain association?关于多域关联的 Grails 验证问题?
【发布时间】:2010-10-22 16:29:28
【问题描述】:

我需要验证 3 个域之间的保存操作,这是关系:

用户 - JobProcess:一对多,JobProcess - Heatmap:一对多。

User { static hasMany = [ jobs : JobProcess ] ... }
JobProcess { static hasMany = [ heatmaps : Heatmap ] ... User script ... }
Heatmap { static belongsTo = JobProcess ... JobProcess job ... }

我正在使用异常来控制验证流程,这是我的验证类:

class ValidationException extends RuntimeException {
  Object invalidObject
  ValidationException(String message, Object invalidObject) {
    super(message)
    this.invalidObject = invalidObject
  }
}

我还构建了一个服务类来抽象热图操作(并将参数数据绑定到对象):

  def addJob(params) {

    def user = User.findById(params.user_id)

    if (user) {

    def heatmap = new Heatmap(params)

    def process = new JobProcess(params)

        process.addToHeatmaps(heatmap)
        user.addToJobs(process)

    if (user.save()) {
      return heatmap
    } else {
       throw new ValidationException("Invalid form", heatmap )
      }
    }
 }

还有我的控制器:

  try {
    def heatmap= HeatmapService.addJob(params)
      flash.message = "Running new process : $heatmap.job}"
      redirect(uri:'/')
  } catch (ValidationException che) {
    flash.message = "Validation Failed ${che.message}"
    render(view:'create', model:[heatmap:che.invalidObject])
  }

我的第一个问题:我没有通过使用 user.save() 进行错误验证 - 为什么不执行验证?
我可以通过以下方式解决此问题购买更新 if (user.save()):if (heatmap.validate() && user.save())。
有更好的方法吗?

我的第二个问题:我的重定向没有触发 invalid-post 异常。
我被重定向到我的创建视图,但我的所有字段都是空白的(我丢失了所有字段信息)并且没有验证错误。
不过,我使用的是模型:[heatmap:che.invalidObject]。
除了例外,我传回了无效对象,所以我的创建视图应该显示确切的验证错误?怎么了?

谢谢

【问题讨论】:

  • 1.你能引用违反的验证器吗? 2. 你也可以尝试在视图中只渲染一个 ${heatmap} 并查看其中的内容吗?看起来更像是一个错字。

标签: java grails groovy grails-validation grails-domain-class


【解决方案1】:

我发现了我的问题,这是由于我的 GSP 视图,我使用了错误的 bean:

<td valign="top" class="value ${hasErrors(bean: heatmapInstance, field: 'project_name', 'errors')}">

所以,我更新了热图,现在我得到了错误验证:

<td valign="top" class="value ${hasErrors(bean: heatmap, field: 'project_name', 'errors')}">

谢谢维克多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多