在控制器中我验证表格输入如下:
withForm {
def user = new User(params)
if(user.save()) {
render "success"
} else {
render view: "userForm", model: [user: user]
}
}.invalidToken {
render view: "userForm"
}
在表单中,如果该字段存在错误,则在输入字段中添加类错误:
<input value="${user?.name}" name="name" type="text" class="text${user?.errors?.getFieldError("name") ? ' error':''}" id="name">
问题: 在视图中看不到Bean用户。如果我删除withForm wrap就可以了。
任何人都知道可能会发生什么?
谢谢。
答案 0 :(得分:0)
您的表单声明是否包含useToken,例如
<g:form useToken="true" ...>
根据documentation,withForm
withForm方法需要在a中使用useToken属性 形式
<强>更新强> 您是否希望在重复提交时返回User bean?您只在不成功保存时返回用户。如果您希望用户在重复提交时返回,请尝试
}.invalidToken {
render view: "userForm", model: [user: user]
}
答案 1 :(得分:0)
为了使您的视图显示验证错误,您的控制器操作需要创建用户实例并对其进行验证。您当前的.invalidToken
块不会执行此操作。一个很好的方法是让你的控制器动作自动从你的参数创建一个User
实例:
def myAction(User user) {
withForm {
if(user.save()) {
render "success"
} else {
render view: "userForm", model: [user: user]
}
}.invalidToken {
render view: "userForm", model: [user: user]
}
}