Kör alakú nézet útvonala

1. Bemutatkozás

Ebben az oktatóanyagban megvizsgáljuk, hogyan szerezhetjük és oldhatjuk meg a Circular View Path hibákat egy Spring MVC alkalmazásban.

2. Függőségek

Ennek bemutatásához hozzunk létre egy egyszerű Spring Boot webprojektet. Először hozzá kell adnunk a Spring Boot webindító függőségét a Maven projektfájlunkba:

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

3. A probléma megismétlése

Ezután hozzunk létre egy egyszerű Spring Boot alkalmazást Vezérlő amely egy útra tér:

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

A visszatérési érték a nézet neve, amely válaszadatokat fog létrehozni. Esetünkben a visszatérési érték az pálya ami a elérési út.html sablon:

  elérési út.html 

elérési út.html

A kiszolgáló elindítása után GET kéréssel megismételhetjük a hibát // localhost: 8080 / path. Ennek eredménye a Kör alakú nézet elérési útja lesz:

{"időbélyeg": "2020-05-22T11: 47: 42.173 + 0000", "status": 500, "error": "Belső kiszolgáló hiba", "message": "Kör alakú nézet útvonala [útvonal]: visszaküldené újra az aktuális kezelő URL-re [/ path]. Ellenőrizze a ViewResolver beállításait! (Tipp: Ez egy nem meghatározott nézet eredménye lehet, az alapértelmezett nézetnév előállítása miatt.) "," path ":" / path "} 

4. Megoldások

Alapértelmezés szerint a Spring MVC keretrendszer a InternalResourceView osztály, mint a nézetmegoldó. Ennek eredményeként ha a @GetMapping értéke megegyezik a nézettel, a kérelem meghiúsul a Kör alakú nézet elérési útjával.

Az egyik lehetséges megoldás a nézet átnevezése és a visszatérési érték megváltoztatása a vezérlő módszerében.

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

Ha nem akarjuk átnevezni a nézetet és megváltoztatni a visszatérési értéket a vezérlő módszerében, akkor másik megoldás az, ha másik nézetprocesszort választunk a projekthez.

A leggyakoribb esetekben választhatjuk a Thymeleaf Java sablonmotort. Tegyük hozzá a tavaszi-bakancs-indító-timeleaf a projekttől való függőség:

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

A projekt újjáépítése után újra futtathatjuk, és a kérés sikeres. Ebben az esetben Thymeleaf helyettesíti a InternalResourceView osztály.

5. Következtetés

Ebben az oktatóanyagban megvizsgáltuk a Kör alakú nézet elérési útjának hibáját, annak okait és a probléma megoldását. Mint mindig, a cikk teljes forráskódja elérhető a GitHubon.