Chyba cesty kruhového pohľadu
1. Úvod
V tomto tutoriáli sa pozrieme na to, ako získame a vyriešime chyby cesty kruhového pohľadu v jarnej aplikácii MVC.
2. Závislosti
Aby sme to demonštrovali, vytvorme si jednoduchý webový projekt Spring Boot. Najprv musíme do nášho súboru projektu Maven pridať závislosť webového štartéra Spring Boot:
org.springframework.boot spring-boot-starter-web
3. Reprodukcia problému
Potom vytvorme jednoduchú aplikáciu Spring Boot s jednou Kontrolór , ktorá vedie k jednej ceste:
@Controller verejná trieda CircularViewPathController {@GetMapping ("/ path") public String path () {return "path"; }}
Návratová hodnota je názov zobrazenia, ktorý vytvorí údaje odpovede. V našom prípade je návratová hodnota cesta ktorá je spojená s cesta.html šablóna:
cesta.html cesta.html
Po spustení servera môžeme chybu reprodukovať podaním žiadosti GET // localhost: 8080 / cesta. Výsledkom bude chyba cesty kruhového pohľadu:
{"timestamp": "2020-05-22T11: 47: 42.173 + 0000", "status": 500, "error": "Interná chyba servera", "správa": "Cesta kruhového výhľadu [cesta]: odošle sa späť znova na aktuálnu adresu URL obslužného nástroja [/ path]. Skontrolujte svoje nastavenie ViewResolver! (Rada: Môže to byť výsledok nešpecifikovaného zobrazenia z dôvodu generovania predvoleného názvu zobrazenia.) "," cesta ":" / cesta "}
4. Riešenia
V predvolenom nastavení rámec Spring MVC uplatňuje InternalResourceView triedy ako prekladača pohľadov. Ako výsledok, ak @GetMapping hodnota je rovnaká ako pohľad, požiadavka zlyhá s chybou cesty v kruhovom zobrazení.
Jedným z možných riešení by bolo premenovanie pohľadu a zmena návratovej hodnoty v metóde radiča.
@Controller verejná trieda CircularViewPathController {@GetMapping ("/ path") public String path () {return "path2"; }}
Ak nechceme premenovať pohľad a zmeniť návratovú hodnotu v metóde radiča, potom ďalším riešením je výber iného procesora pohľadu pre projekt.
Pre najbežnejšie prípady môžeme zvoliť šablónový modul Java Thymeleaf. Pridajme spring-boot-starter-thymeleaf závislosť od projektu:
org.springframework.boot spring-boot-starter-thymeleaf
Po prebudovaní projektu ho môžeme opäť spustiť a požiadavka je úspešná. V tomto prípade Thymeleaf nahrádza InternalResourceView trieda.
5. Záver
V tomto tutoriáli sme sa pozreli na chybu cesty v kruhovom zobrazení, prečo sa to stane a ako problém vyriešiť. Celý zdrojový kód článku je ako vždy k dispozícii na GitHub.