【发布时间】:2014-01-28 05:01:38
【问题描述】:
我正在构建这个适用于用户个人资料的网络应用。用户编辑配置文件,如果输入错误数据,配置文件会以红色显示无效字段并显示消息。很简单的场景。但由于某些原因,它不像我想象的那样工作。我可能在某个地方遗漏了一些东西。这是我在控制器中所做的。
正如您在下面的代码中看到的那样,我创建了一个新的配置文件,我使用包含列表将参数绑定到它以仅绑定配置文件接受的那些参数,然后在配置文件实例上调用 hasErrors。在调试模式下,当用户输入错误时,我可以看到 myProfile 有错误,但是当我返回 editProfile 页面时,它没有显示哪个字段有错误。我的 gsp 表单有渲染错误标签,并且每个字段都有错误。
def update (){
def myProfile = new Profile()
dataBind(params, myProfile, include:[.....])
if (myProfile.hasErrors()){
respond myUser.errors, view: 'editProfile'
return
}
else{
redirect(action:"viewProfile")
}
}
我的 gsp 是这样的,我现在无法访问我的家用电脑来发布确切的 gsp 页面:
<g:hasErrors bean="${myUser}" field="name">
<g:message error="${myUser.errors.getFieldErrors("name")}" />
</g:hasErrors>
【问题讨论】:
-
因为看起来您正在执行 HTML 请求(不是 Ajax),所以我通常会使用 myUser 进行响应,而不是 myUser.errors。然后 gsp 可以做一个
. -
什么时候使用响应,什么时候使用重定向,当 hasErrors 为真时?我不明白当 hasErrors() 为真时该怎么做,我想停止流程并在 gsp 页面中显示错误。我知道“返回”会停止流动。但我应该使用响应还是重定向?
-
另外,如果我在一个 gsp 页面中有两个域对象并且都有错误,有没有办法在它们上显示错误?我相信响应不会访问两个域实例,如果我错了,请纠正我
标签: validation grails gsp