Rest 如何在发生Grails验证错误时将域实例发送回客户端

Rest 如何在发生Grails验证错误时将域实例发送回客户端,rest,Rest,我刚开始学习Grails,我的问题可能是愚蠢的。所以,如果这是愚蠢的,我道歉。我有一个客户端程序和一个REST web服务——都是由我编写的。客户机程序使用POST调用RESTful服务(向数据库添加记录)。调用object.save()时,返回了一些验证错误 在我的gsp中,我有fieldError标记,用于读取bean中每个字段的错误消息并在屏幕上显示。我假设我需要将验证失败的域实例从RESTful服务传递给客户端,以便客户端可以将其发送给gsp,gsp将自动显示错误。如果这是错误的,请纠正

我刚开始学习Grails,我的问题可能是愚蠢的。所以,如果这是愚蠢的,我道歉。我有一个客户端程序和一个REST web服务——都是由我编写的。客户机程序使用POST调用RESTful服务(向数据库添加记录)。调用object.save()时,返回了一些验证错误

在我的gsp中,我有fieldError标记,用于读取bean中每个字段的错误消息并在屏幕上显示。我假设我需要将验证失败的域实例从RESTful服务传递给客户端,以便客户端可以将其发送给gsp,gsp将自动显示错误。如果这是错误的,请纠正我。但是,我不知道如何从web服务以XML形式传递域实例对象。但是,当验证成功时,我会得到类似“render object as 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()失败时将整个student对象发送回客户端。有人能帮忙吗

如果你需要更多信息,请告诉我。这是我在stackoverflow的第一篇文章,所以我不知道是否需要提供更多细节。非常感谢您的帮助

谢谢


Prem

因为请求是通过ajax发出的,所以您需要用ajax的方式来处理它

您的gsp在服务器上编译,并在第一次请求页面时作为html发送到客户端

处理此问题的一种方法是在ajax响应上设置一个错误,并返回要呈现的代码片段


然后,可以在调用JavaScript的错误部分处理响应,并在您希望的页面上呈现代码片段。

下面是我的gsp代码,用于呈现每个字段的错误${label}:
谢谢。我不使用AJAX。不确定我是否清楚我只是想传回域对象实例(根据我上面的例子,它将是学生对象),我想传回调用客户端。我想传回这个对象的原因是它已经设置了错误(Spring接口),如果我能以某种方式将这个学生对象发送回客户端,我就可以解析这个对象并读取gsp中的fieldErrors。请帮忙!