У меня есть форма регистрации, которая содержит поля, относящиеся к двум объектам домена;Пользователь и профиль.Это соотношение 1: 1, принадлежащее классу домена User.
Действие 'register' на пользовательском контроллере выполняет маршализацию значений формы и при условии отсутствия ошибок валидации сохраняет пользовательский объект и перенаправляет в корень приложения при отправке формы.В противном случае контроллер будет перенаправлять обратно в форму регистрации, показывая предварительно заполненные поля с ошибочными значениями.
Однако на практике при сбое проверки сбойные значения не отображаются в представлении.Ниже приведен код для действия с регистром:
def registration = {
}
def register = {
def user = new User()
bindData(user, params)
if (user.save()) {
flash.message = 'Successfully Registered User'
redirect(uri: '/')
}else {
flash.message = 'Registration Failed!'
redirect(action: registration, params: [ user: user ])
}
}
Ниже приведен пример html-выдержки из представления, отображающего поля, связанные с пользователем и профилем:
<div class="row">
<label for="city"> City, State: </label>
<g:textField id="city" name="profile.city"
value="${user?.profile?.city}" size="28" />
<span class="red">*</span>
</div>
<hr />
<div class="row">
<label for="email"> E-mail address: </label>
<g:textField id="email" name="userId" value="${user?.userId}" size="28" />
<span class="red">*</span>
</div>
Синтаксически, все выглядит нормально;Я использую соответствующие соглашения об именах и интерполяцию Грааля для обработки значений, так что я точно знаю, почему это не работает так, как ожидалось.
Любые комментарии или предложения будут оценены.
Спасибо, Том