2015-06-15 6 views
3

Мое приложение загрузки весны, возвращающееся ниже ответа json, когда контроллер отвечает с 400-BadRequest.Как перезаписать ответ JSON по умолчанию при загрузке весны

{ 
    "readyState": 4, 
    "responseText": "{\r\n \"success\" : false,\r\n \"projects\" :null,\r\n \"httpStatusCode\" : \"400\",\r\n \"message\" : \"Request Processing failed.\",\r\n \"requestErrors\" : [ {\r\n \"error\" : \"platform required.\"\r\n }, {\r\n \"error\" : \"id required.\"\r\n }, {\r\n \"error\" : \"name required.\"\r\n } ]\r\n}", 
"responseJSON": { 
"success": false, 
"projects": null, 
"httpStatusCode": "400", 
"message": "Request Processing failed.", 
"requestErrors": [ 
    { 
    "error": "platform required." 
    }, 
    { 
    "error": "id required." 
    }, 
    { 
    "error": "name required." 
    } 
] 
}, 
"status": 400, 
"statusText": "Bad Request" 
} 

Но здесь я не хочу видеть JSon элементы responseText, status и statusText, так как мой сам JSON объект, имеющий эту информацию.

Это мой класс CustomErrorAttributes.

public class CustomErrorAttribute implements ErrorAttributes { 
@Override 
public Map<String, Object> getErrorAttributes(RequestAttributes requestAttributes, boolean includeStackTrace) { 
    Map<String, Object> errorAttributes = new LinkedHashMap<String, Object>(); 
    errorAttributes.put("timestamp", new Date()); 
    return errorAttributes; 
} 

@Override 
public Throwable getError(RequestAttributes requestAttributes) { 
    return new IllegalStateException("Illegal State of the request."); 
} 
} 

Java Config:

@Bean 
public ErrorAttributes customErrorAttribute(){ 
    return new CustomErrorAttribute(); 
} 

Я попытался с регистрирующим пользовательской реализации ErrorAttributes как @Bean, как это указано here

Но не повезло, пожалуйста, какой-либо помощи. Благодарю.

+0

Не могли бы вы разместить код, в котором вы настраиваете 'ErrorAttributes'? – geoand

+0

Привет @geoand обновленный вопрос с реализацией ErrorAttributes. – Lovababu

+0

У вас есть какой-либо компонент типа 'ErrorAttributes' настроен? – geoand

ответ

3

Вам необходимо сообщить Spring о вашей реализации CustomErrorAttribute.

Просто добавьте класс конфигурации (или просто добавить @Bean части к одному из существующих классов конфигурации Spring), как:

@Configuration 
public class MvcErrorConfig { 

    @Bean 
    public CustomErrorAttribute errorAttributes() { 
     return new CustomErrorAttribute(); 
    } 

} 

и все работает из коробки.

This В части документации есть все подробности. Соответствующий класс автоконфигурации Spring Boot: ErrorMvcAutoConfiguration

+0

Я уверен, что 'CustomErrorAttribute' - это Spring, потому что я могу его автоустанавливать. githug ссылка на мой проект https://github.com/lovababu/SpringBootExample – Lovababu

+0

Хорошо, я запускаю проект и возвращаюсь к вам – geoand

+0

Обработка ошибок в вашем проекте работает из коробки для меня. Класс 'CustomErrorAttribute' корректно используется Spring. Возможно, вы должны выполнить «градир чистой» и посмотреть, что происходит – geoand