Fejl i cirkulær sti
1. Introduktion
I denne vejledning ser vi på, hvordan vi får og løser fejl i Circular View Path i et Spring MVC-program.
2. Afhængigheder
Lad os oprette et simpelt Spring Boot-webprojekt for at demonstrere dette. Først skal vi tilføje Spring Boot-webstartsafhængighed i vores Maven-projektfil:
org.springframework.boot spring-boot-starter-web
3. Reproduktion af problemet
Lad os derefter oprette en simpel Spring Boot-applikation med en Controller der løser en vej:
@Controller public class CircularViewPathController {@GetMapping ("/ path") public String path () {return "path"; }}
Returværdien er det visningsnavn, der producerer svardata. I vores tilfælde er returværdien sti der er forbundet med sti.html skabelon:
sti.html sti.html
Når vi har startet serveren, kan vi reproducere fejlen ved at lave en GET-anmodning til // localhost: 8080 / sti. Resultatet bliver Circular View Path-fejlen:
{"tidsstempel": "2020-05-22T11: 47: 42.173 + 0000", "status": 500, "error": "Intern serverfejl", "meddelelse": "Rund visningssti [sti]: sendes tilbage til den aktuelle handler URL [/ sti] igen. Tjek din ViewResolver-opsætning! (Tip: Dette kan være resultatet af en uspecificeret visning på grund af standardvisningsgenerering af navn.) "," path ":" / path "}
4. Løsninger
Som standard anvender Spring MVC-rammen InternalResourceView klasse som visningsopløseren. Som resultat, hvis den @GetMapping værdi er den samme som visningen, mislykkes anmodningen med stienfejlen Circular View.
En mulig løsning ville være at omdøbe visningen og ændre returværdien i controller-metoden.
@Controller public class CircularViewPathController {@GetMapping ("/ path") public String path () {return "path2"; }}
Hvis vi ikke ønsker at omdøbe visningen og ændre returværdien i controller-metoden, er en anden løsning at vælge en anden visningsprocessor til projektet.
I de mest almindelige tilfælde kan vi vælge Thymeleaf Java-skabelonmotoren. Lad os tilføje spring-boot-starter-thymeleaf afhængighed af projektet:
org.springframework.boot spring-boot-starter-thymeleaf
Efter genopbygning af projektet kan vi køre det igen, og anmodningen er vellykket. I dette tilfælde erstatter Thymeleaf InternalResourceView klasse.
5. Konklusion
I denne vejledning så vi på stienfejlen Circular View, hvorfor det sker, og hvordan man løser problemet. Som altid er artiklens fulde kildekode tilgængelig på GitHub.