Проблема валидации Грааля в области многодоменной ассоциации?

StackOverflow https://stackoverflow.com/questions/3998902

Вопрос

Мне нужно подтвердить действия сохранения между 3 доменами, вот отношения:

Пользователь-JobProcess: один ко многим, JobProcess-Heatmap: One-To-Many.

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
  }
}

Я также создаю сервисный класс для абстрактных операций с тепловой картой (и связывает данные Params с объектом):

  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 ()) by: if (theatmap.validate () && user.save ()).
Есть ли лучший способ продолжить?

Мой второй вопрос : Мой перенаправление не вызывает неверного исключения.
Я перенаправлен на свой представление «Создание», но все мои поля пусты (я потерял всю информацию о полях) и без ошибок проверки.
Тем не менее, я использую модель: [Heatmap: Che.invalidObject].
За исключением, я возвращаю InvalidObject, поэтому мой представление создания должно отображать точные ошибки проверки? Что случилось ?

Спасибо

Это было полезно?

Решение

Я нахожу свою проблему, это связано с моей точкой зрения GSP, я использовал не тот фасоль:

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

Итак, я обновился до тепловой карты, и теперь я получаю проверку ошибки:

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

Спасибо, Виктор.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top