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.


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