Fout circulair weergavepad

1. Inleiding

In deze zelfstudie bekijken we hoe we Circular View Path-fouten in een Spring MVC-toepassing krijgen en oplossen.

2. Afhankelijkheden

Laten we om dit te demonstreren een eenvoudig Spring Boot-webproject maken. Eerst moeten we de Spring Boot-webstarterafhankelijkheid toevoegen aan ons Maven-projectbestand:

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

3. Reproductie van het probleem

Laten we er vervolgens een eenvoudige Spring Boot-applicatie mee maken Controller dat wordt opgelost in één pad:

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

De geretourneerde waarde is de weergavenaam die responsgegevens zal produceren. In ons geval is de retourwaarde pad die is gekoppeld aan de pad.html sjabloon:

  pad.html 

pad.html

Nadat we de server hebben gestart, kunnen we de fout reproduceren door een GET-verzoek in te dienen bij // localhost: 8080 / pad. Het resultaat is de Circular View Path-fout:

{"timestamp": "2020-05-22T11: 47: 42.173 + 0000", "status": 500, "error": "Internal Server Error", "message": "Cirkelvormig weergavepad [pad]: wordt teruggestuurd naar de huidige handler-URL [/ pad]. Controleer uw ViewResolver-instellingen! (Hint: dit kan het resultaat zijn van een niet-gespecificeerde weergave, vanwege het genereren van de standaardweergavenaam.) "," path ":" / path "} 

4. Oplossingen

Standaard past het Spring MVC-framework het InternalResourceView class als de view resolver. Als resultaat, als het @GetMapping waarde is hetzelfde als het uitzicht, zal het verzoek mislukken met de Circular View-padfout.

Een mogelijke oplossing zou zijn om de weergave te hernoemen en de geretourneerde waarde in de controllermethode te wijzigen.

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

Als we de weergave niet willen hernoemen en de retourwaarde in de controllermethode niet willen wijzigen, dan is een andere oplossing om een ‚Äč‚Äčandere weergaveprocessor voor het project te kiezen.

Voor de meest voorkomende gevallen kunnen we de Thymeleaf Java-sjabloonengine kiezen. Laten we de spring-boot-starter-thymeleaf afhankelijkheid van het project:

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

Na het opnieuw opbouwen van het project kunnen we het opnieuw uitvoeren, en de aanvraag is succesvol. In dit geval vervangt Thymeleaf de InternalResourceView klasse.

5. Conclusie

In deze zelfstudie hebben we gekeken naar de Circular View-padfout, waarom deze optreedt en hoe het probleem kan worden opgelost. Zoals altijd is de volledige broncode van het artikel beschikbaar op GitHub.