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.