Пользовательский контроллер ошибок, как получить исходный путь URL - PullRequest
0 голосов
/ 10 апреля 2019

В моем весеннем загрузочном проекте я реализовал класс CustomErrorController, который реализует интерфейс ErrorController следующим образом:

@Controller
public class CustomErrorController implements ErrorController{


    @RequestMapping("/error")
    @ResponseBody
    public String handleError(HttpServletRequest request) {
        System.out.println("Request URL " + request.getRequestURL());
          Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
          Exception exception = (Exception) request.getAttribute("javax.servlet.error.exception");
          if(statusCode.equals(404)) {
              return String.format("<html><body><h2>Pagina non trovata</h2><div>Status code: <b>%s</b></div>"
                      + "<div>Exception Message: <b>La pagina cercata non esiste.</b></div><body></html>",
              statusCode, exception==null? "N/A": exception.getMessage());
          } else if (statusCode.equals(505)) {
              return String.format("<html><body><h2>Istanza non trovata</h2><div>Status code: <b>%s</b></div>"
                      + "<div>Exception Message: <b>L'istanza non è presente nel database</b></div><body></html>",
              statusCode, exception==null? "N/A": exception.getMessage());
          } else {
              return String.format("<html><body><h2>Errore</h2><div>Status code: <b>%s</b></div>"
                      + "<div>Exception Message: <b>%s</b></div><body></html>",
              statusCode, exception==null? "N/A": exception.getMessage());
          }

      }

    @Override
    public String getErrorPath() {

        return "/error";
    }

}

Теперь я хотел бы выдавать разные сообщения не только на основе кода состояния, но также в зависимости от того, к какой конечной точке пользователь выполнил запрос.Я пытался использовать метод request.getRequestURL(), но он возвращает http://localhost:9090/error.Вместо этого, как я могу получить строку "source URL"?Чтобы различать, скажем, если была сгенерирована ошибка по адресу http://localhost:9090/objects или http://localhost:9090/otherobjects.

...