我是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>
如果有办法,请告诉我。谢谢!
答案 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:初始验证应在客户端进行。