Невозможно сохранить доменные объекты, пока не используется скаффолд CRUD - PullRequest
0 голосов
/ 20 мая 2011

У меня самая странная проблема с контроллером в проекте Grails.Я пытаюсь сделать простое обновление объекта домена.Вот упрощенная версия контроллера

def updateRecord = {
    def foundHVT = Process.get(params.hvt)

    foundHVT.summaryBy = params.summaryBy
    foundHVT.catalogBy = params.catalogBy
    foundHVT.editBy = params.editBy
    foundHVT.produceBy = params.produceBy
    foundHVT.correctedBy = params.correctedBy
    // a bunch more of these

    foundHVT.save(flush: true);

    redirect (action:resource, id: params.hvt)
}

Если я запускаю новый экземпляр приложения и использую этот контроллер для обновления объекта, он не работает, объект не сохраняется.Это будет хорошо выглядеть в контроллере.Я могу, например, повторно запросить объект, и изменения есть, сохранить после.

Теперь вот где это становится странным.Если я использую предустановленный контроллер редактирования scaffold и обновляю / сохраняю объект домена - и затем переключаюсь обратно на этот контроллер "updateRecord", он работает FINE, пока я не выключу сервер, на котором он работает?!?

Я понимаю, что упускаю что-то очень простое, но не могу найти, что это такое.Любое руководство будет любезно оценено.

DM

Ответы [ 3 ]

1 голос
/ 26 мая 2011

Как отметили HVGOTCODES, Grails Clean, похоже, исправил все, что происходило с этим контроллером.

0 голосов
/ 21 мая 2011

Вероятно, леса save заполняют некоторые поля, которые вы не делаете.

Возможные проблемы:

  1. Проверьте save() результат и просмотрите foundHVT.errorsкак делает Граальс.Добавьте параметр failOnError: true к save() или просто отметьте foundHVT.hasErrors().Посмотрите на foundHVT.errors.allErrors для проблем проверки.

  2. Почему бы не foundHVT.properties = params?

  3. Что там нет foundHVT?

0 голосов
/ 21 мая 2011

попробуйте добавить "def scaffold = true" в свой контроллер, если у него еще нет нормальных точек входа.

...