【发布时间】:2014-09-19 15:50:50
【问题描述】:
我正在构建一个 RESTful API,并且我正在创建的端点正在使用命令对象来验证请求数据。我试图找出将验证错误呈现为 json 的最佳方法。对于 xml 响应,我遵循了 Grails in Action 书中的建议并做了...
response.status = 403
render(contentType: "text/xml") {
errors {
eventSaleDataCommand.errors.fieldErrors.each { err ->
field(err.field)
message(g.message(error: err))
}
}
}
这很适合渲染 xml 响应,所以我想知道渲染 json 响应的推荐方法是什么?
我想对错误的显示方式进行一些控制,因此对于我添加的 json 响应:
def results = eventSaleDataCommand.errors.fieldErrors.toList()
def errors = []
for (error in results) {
errors.add([
'type' : 'invalid_entry',
'field' : error.field,
'rejected_value': error.rejectedValue,
'message' : error.defaultMessage
])
}
render errors as JSON
这种方法的问题是我正在使用 Joda 时间插件,因此当我尝试将地图呈现为 JSON 时出现以下异常:
Class org.codehaus.groovy.grails.web.converters.marshaller.json.GenericJavaBeanMarshaller can not access a member of class org.joda.time.tz.DateTimeZoneBuilder$PrecalculatedZone with modifiers "public".
有人知道解决这个问题的方法吗?
【问题讨论】:
-
您尝试将 contentType 更改为
text/json,是吗? -
是的。我得到一个例外:
java.lang.IllegalArgumentException: Array elements must be defined with the "element" method call eg: element(value)
标签: rest grails grails-2.0