如果Grails验证错误,如何将域实例发送回客户端

时间:2014-06-11 17:56:48

标签: rest

我刚开始学习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中的第一篇文章,所以我真的不知道是否需要提供更多细节。非常感谢任何帮助。

谢谢,

炳廷

1 个答案:

答案 0 :(得分:0)

因为请求是通过ajax进行的,所以你需要以Ajax方式处理它。

您的gsp在服务器上编译,并在首次请求页面时以html格式发送给客户端。

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

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