Я создаю API RESTful, и создаваемые конечные точки используют объекты команд для проверки данных запроса. Я пытаюсь найти лучший способ сделать ошибки проверки как json. Для ответов XML я выполнил рекомендацию в Grails в книге действий и сделал ...Grails - отображать ошибки проверки как JSON
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', не так ли? – injecteer
Да. Я получаю исключение: 'java.lang.IllegalArgumentException: Элементы массива должны быть определены с помощью вызова метода« element », например: element (value)' – user1866924