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.