我有一个注册表单,其中包含与两个域对象相关的字段;用户和个人资料。该关系是 User 域类拥有的 1:1 映射。
用户控制器上的“注册”操作对表单值进行编组,并在没有验证错误的情况下保留用户对象并在提交表单时重定向到应用程序根目录。否则,控制器将重定向回注册表单,显示带有失败值的预填充字段。
但是,在实践中,当验证失败时,失败的值不会显示在视图中。以下是注册操作的代码:
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>
从语法上看,一切看起来都还不错;我正在使用适当的命名约定和 grail 的插值来访问值,所以我不知道为什么它的行为不符合预期。
任何意见或建议将不胜感激。
谢谢,-汤姆