Проблема валидации Грааля в области многодоменной ассоциации?
-
10-10-2019 - |
Вопрос
Мне нужно подтвердить действия сохранения между 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')}">
Спасибо, Виктор.