Рубрики
Без рубрики

Ошибка траектории кругового Обзора

Узнайте об ошибке пути кругового обзора в проекте Spring Boot.

Автор оригинала: baeldung.

1. введение

В этом уроке мы рассмотрим, как мы получаем и устраняем ошибки пути кругового обзора в приложении Spring MVC.

2. Зависимости

Чтобы продемонстрировать это, давайте создадим простой веб-проект Spring Boot. Во-первых, нам нужно добавить зависимость Spring Boot web starter в наш файл проекта Maven:


    org.springframework.boot
    spring-boot-starter-web

3. Воспроизведение проблемы

Затем давайте создадим простое приложение Spring Boot с одним Контроллером , которое разрешает один путь:

@Controller
public class CircularViewPathController {

    @GetMapping("/path")
    public String path() {
        return "path";
    }
}

Возвращаемое значение-это имя представления, которое будет генерировать данные ответа. В нашем случае возвращаемым значением является path , который связан с path.html шаблон:



    path.html


    

path.html

После запуска сервера мы можем воспроизвести ошибку, отправив запрос GET в http://localhost:8080/path . Результатом будет ошибка пути кругового обзора:

{"timestamp":"2020-05-22T11:47:42.173+0000","status":500,"error":"Internal Server Error",
"message":"Circular view path [path]: would dispatch back to the current handler URL [/path] 
again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, 
due to default view name generation.)","path":"/path"}

4. Решения

По умолчанию платформа Spring MVC применяет класс InternalResourceView в качестве распознавателя представлений. В результате, если значение @GetMapping совпадает с представлением , запрос завершится ошибкой пути кругового представления.

Одним из возможных решений было бы переименовать представление и изменить возвращаемое значение в методе контроллера.

@Controller
public class CircularViewPathController {
  @GetMapping("/path")
  public String path() {
    return "path2";
  }
}

Если мы не хотим переименовывать представление и изменять возвращаемое значение в методе контроллера, то другим решением является выбор другого процессора представления для проекта.

Для наиболее распространенных случаев мы можем выбрать Thymeleaf Java template engine . Давайте добавим |/spring-boot-starter-thymeleaf зависимость в проект:


    org.springframework.boot
    spring-boot-starter-thymeleaf

После перестройки проекта мы можем запустить его снова, и запрос будет успешным. В этом случае Thymeleaf заменяет класс InternalResourceView .

5. Заключение

В этом уроке мы рассмотрели ошибку пути кругового обзора, почему это происходит и как решить эту проблему. Как всегда, полный исходный код статьи доступен на GitHub .