Как настроить страницу ошибки Spring в формате JSON с помощью web.xml и контроллера ошибок - PullRequest
0 голосов
/ 19 мая 2019

С Spring 5 я в настоящее время могу настроить страницу ошибки в src/main/webapp/web.xml, то есть добавлена ​​следующая конфигурация:

<error-page>
    <location>/WEB-INF/error.html</location>
</error-page>

Inтаким образом, error.html будет отображаться, когда в контроллере 1012 * будет Exception.Однако этот error.html имеет формат html , отличный от ожидаемого формата JSON .

Я пытался создать контроллер ошибок с некоторымикод, подобный следующему:

@RestController
@RequestMapping(value = "/handler")
public class ErrorController {

  @RequestMapping(value = "/errors")
  public String renderErrorPage(HttpServletRequest httpRequest) {
    System.out.println("DEBUG::come to error page");
    return "test error";
  }
}

В то же время настроено error-page как таковое:

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<error-page>
    <location>/handler/errors</location>
</error-page>

Но ErrorController не может быть вызвано.

Вопрос: Как настроить страницу ошибки Spring в формате JSON с web.xml и контроллером ошибок

1 Ответ

0 голосов
/ 24 мая 2019

В конце концов я понял, что сервлаты фильтруются с /rest/* через тег servlet-mapping, поэтому location из error-page должен начинаться с префикса /rest, что означает, что тег error-page должен быть настроенкак таковой:

<error-page>
    <location>/rest/errors</location>
</error-page>

Соответственно контроллер может быть настроен следующим образом:

@RestController
//@RequestMapping(value = "/handler")
public class ErrorController {

    @RequestMapping(value = "/errors")
    public String renderErrorPage(HttpServletRequest httpRequest) {
        System.out.println("DEBUG::come to error page");
        return "test error";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...