在Grails中发送JSON响应和模型

时间:2015-02-06 08:29:32

标签: json grails jquery-datatables

我是Grails的新手,我遇到了问题。我想知道是否有办法通过Grails中的“render”发送JSON和视图和模型。

我正在使用jQuery Datatable来显示从服务器返回的数据,该数据是从控制器返回的JSON中读取的。如果表单字段中的验证失败,我还需要在同一视图上显示错误消息。但我只能使用渲染返回JSON或模型和视图。我也试过通过模型本身发送JSON,但它没有用。

这是我的代码: -

def hierarchyBreakInstance = new HierarchyBreak(params);
String json = "{\"sEcho\":\"1\",\"iTotalRecords\":0,\"iTotalDisplayRecords\":0,\"aaData\":[]}";

hierarchyBreakInstance.errors.reject(message(code: 'hierarchyBreak.error.division.blank'));
render(view: "hierarchyBreak", model: [hierarchyBreakInstance: hierarchyBreakInstance]);
//render json;

gsp代码: -

<g:hasErrors bean="${hierarchyBreakInstance}">
    <div class="errorMessage" role="alert">
        <g:eachError bean="${hierarchyBreakInstance}" var="error">
           <g:if test="${error in org.springframework.validation.FieldError}" > data-field-id="${error.field}"</g:if>
               <g:message error="${error}"/>
        </g:eachError>
    </div>
</g:hasErrors>

如果有办法,请告诉我。谢谢!

2 个答案:

答案 0 :(得分:0)

你可以这样使用。

def hierarchyBreakInstance = new HierarchyBreak(params);
String json = "{\"sEcho\":\"1\",\"iTotalRecords\":0,\"iTotalDisplayRecords\":0,\"aaData\":[]}";

hierarchyBreakInstance.errors.reject(message(code: 'hierarchyBreak.error.division.blank'));
render(view: "hierarchyBreak", model: [hierarchyBreakInstance: hierarchyBreakInstance,json:json]);
//render json;

答案 1 :(得分:0)

假设您正在使用某些参数执行请求,并且如果成功或不成功则需要返回,并且使用ajax填充表的数据。 我会这样做,使用HTTP的状态来标记它是否是验证问题(通常我们返回400 Bad Request和消息)

示例:

return ErrorSender.sendBadRequest("error validating field $field with value $value")

错误者有一个sendBadRequest方法

[response: ['message': message, error: "bad_request", status: 400, cause: []], status: 400]

如果请求正常,您只需要使用类似

的内容来回复数据
return [response: results, status: 200]

在客户端,如果请求可以解析结果,则必须有一个函数;如果请求有一些验证数据问题,数据库问题或导致请求未返回200的任何函数,则必须有一个函数(在例子),有更多的状态代码,你可以检查 http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

PD:初始验证应在客户端进行。