Я пытаюсь написать обработчик ошибок в Spring-Boot для моих контроллеров, которые поймают наиболее возможные ошибки (Spring, sql и т. Д.). Пока я могу получить ответ JSON с Nulls, однако я не могу помещать какие-либо данные внутри. Когда я пытаюсь получить сообщение об ошибке, я просто получаю пустую страницу.Spring-Boot - Обработка ошибок
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException;
@RestController
public class BasicErrorController implements ErrorController {
private static final String ERROR_PATH = "/error";
@RequestMapping(value=ERROR_PATH)
@ExceptionHandler(value = {NoSuchRequestHandlingMethodException.class, SQLException.class, IOException.class, RuntimeException.class, Exception.class})
public ErrorBody defaultErrorHandler(HttpServletRequest request, Exception e) {
ErrorBody eBody = new ErrorBody();
eBody.setMessage(e.getCause().getMessage());
return eBody;
}
}
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ErrorBody {
private String dateTime;
private String exception;
private String url;
private String message;
}
Не знаете, что вы подразумеваете под «неспособным поместить какие-либо данные внутри» - что вы сделали и что вы видели в результате? Вы не нуждаетесь в аннотации '@ ExceptionHandler' в' ErrorController' (но вам нужно реализовать интерфейс, а ваш, похоже, не подходит). Посмотрите, как «BasicErrorController» реализован в Spring Boot для подсказок. –
Возможно, лучше реализовать 'ErrorAttributes' (не' ErrorController'), но это ваш выбор, если вы хотите получить полный контроль. –
Спасибо за ответы. «Невозможно поместить какие-либо данные внутри» я имел в виду, что всякий раз, когда я пытался получить какие-либо данные из-за ошибки, JSON не отображался. Я решил, что сегодня я смог получить данные об ошибках и правильно отправить их как json, используя «запрос HttpServletRequest» и считывая информацию из запроса. – Groth