我刚开始学习Grails,我的问题可能是愚蠢的。如果它是愚蠢的,那么道歉。我有一个客户端程序和一个REST Web服务 - 都由我编写。客户端程序使用POST调用RESTful服务(将记录添加到数据库)。当我调用object.save()时,会返回一些验证错误。
在我的gsp中,我编写了fieldError标记,用于读取bean中每个字段的错误消息并在屏幕中显示。我假设我需要将验证失败的域实例从RESTful服务传递到客户端,以便客户端可以将其发送到gsp,这将自动显示错误。如果这是错误的,请纠正我。但是我不知道如何从Web服务将域实例对象作为XML传递。验证成功后,我得到像“渲染对象为XML”这样的对象。但是,当验证失败时,我不知道如何将整个失败的域实例对象作为xml传回。
我尝试编码,
if (student.save()){
render student as XML
} else {
student.errors.each(){
println it
}
def errmsg = student.errors.allErrors.collect { g.message(error:it) }
render(contentType:"text/xml") {
respstud {
for(err in errmsg) {
message(err)
}
}
}
}
这将特定的错误消息作为xml返回给客户端,但是当save()失败时,我需要将整个学生对象发送回客户端。有人可以帮忙吗?
如果您需要更多信息,请与我们联系。这是我在stackoverflow中的第一篇文章,所以我真的不知道是否需要提供更多细节。非常感谢任何帮助。
谢谢,
炳廷
答案 0 :(得分:0)
因为请求是通过ajax进行的,所以你需要以Ajax方式处理它。
您的gsp在服务器上编译,并在首次请求页面时以html格式发送给客户端。
处理此问题的一种方法是在ajax响应上设置错误并返回您想要呈现的代码片段。
然后,您可以在调用JavaScript的错误部分以及您希望的页面上呈现的代码段中处理响应。