Feil i sirkulær sti

1. Introduksjon

I denne veiledningen vil vi se på hvordan vi får og løser Circular View Path-feil i et Spring MVC-program.

2. Avhengigheter

For å demonstrere dette, la oss lage et enkelt Spring Boot-webprosjekt. Først må vi legge til vårstarteravhengighet i vår Boot i vår Maven-prosjektfil:

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

3. Gjengi problemet

La oss lage en enkel Spring Boot-applikasjon med en Kontroller som løser seg til en vei:

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

Returverdien er visningsnavnet som vil gi responsdata. I vårt tilfelle er returverdien sti som er assosiert med sti.html mal:

  sti.html 

sti.html

Etter at vi har startet serveren, kan vi reprodusere feilen ved å gjøre en GET-forespørsel til // localhost: 8080 / sti. Resultatet blir Circular View Path-feilen:

{"timestamp": "2020-05-22T11: 47: 42.173 + 0000", "status": 500, "error": "Internal Server Error", "message": "Circular view path [path]: would send back back til gjeldende URL-adresse [/ sti] igjen. Kontroller ViewResolver-oppsettet! (Hint: Dette kan være resultatet av en uspesifisert visning på grunn av standard generering av visningsnavn.) "," path ":" / path "} 

4. Løsninger

Som standard gjelder våren MVC-rammeverket InternalResourceView klasse som visningsoppløseren. Som et resultat, hvis @GetMapping verdien er den samme som visningen, vil forespørselen mislykkes med banen Circular View path.

En mulig løsning ville være å gi nytt navn til visningen og endre returverdien i kontrollermetoden.

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

Hvis vi ikke vil gi nytt navn til visningen og endre returverdien i kontrollermetoden, er en annen løsning å velge en annen visningsprosessor for prosjektet.

For de vanligste tilfellene kan vi velge Thymeleaf Java-malmotoren. La oss legge til spring-boot-starter-thymeleaf avhengighet av prosjektet:

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

Etter at vi har gjenoppbygd prosjektet, kan vi kjøre det igjen, og forespørselen er vellykket. I dette tilfellet erstatter Thymeleaf InternalResourceView klasse.

5. Konklusjon

I denne veiledningen så vi på Circular View path-feilen, hvorfor det skjer og hvordan du løser problemet. Som alltid er hele kildekoden til artikkelen tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found