Pogreška kružnog puta prikaza
1. Uvod
U ovom ćemo uputstvu pogledati kako dolazimo do i rješavamo pogreške puta kružnog pogleda u Spring MVC aplikaciji.
2. Ovisnosti
Da bismo to demonstrirali, napravimo jednostavan web projekt Spring Boot. Prvo, moramo dodati ovisnost o pokretaču web pokreta Spring Boot u našu datoteku projekta Maven:
org.springframework.boot spring-boot-starter-web
3. Reproduciranje problema
Zatim, kreirajmo jednostavnu aplikaciju Spring Boot s jednom Kontroler koji se rješava na jedan put:
@Controller javna klasa CircularViewPathController {@GetMapping ("/ path") javni put niza () {return "path"; }}
Povratna vrijednost je ime pogleda koje će proizvesti podatke o odgovoru. U našem slučaju, povratna vrijednost je staza koji je povezan sa put.html predložak:
put.html put.html
Nakon što pokrenemo poslužitelj, možemo reproducirati pogrešku podnošenjem GET zahtjeva za // localhost: 8080 / put. Rezultat će biti pogreška putanje kružnog pogleda:
{"timestamp": "2020-05-22T11: 47: 42.173 + 0000", "status": 500, "error": "Interna pogreška poslužitelja", "message": "Put kružnog pogleda [put]: poslao bi natrag na trenutni URL obrađivača [/ path]. Provjerite postavku ViewResolver! (Savjet: To je možda rezultat neodređenog prikaza zbog zadanog generiranja imena pogleda.) "," path ":" / path "}
4. Rješenja
Prema zadanim postavkama Spring MVC okvir primjenjuje InternalResourceView klasa kao razrješivač prikaza. Kao rezultat, ako je @GetMapping vrijednost je ista kao i pogled, zahtjev neće uspjeti s pogreškom puta kružnog pogleda.
Jedno od mogućih rješenja bilo bi preimenovanje pogleda i promjena povratne vrijednosti u metodi kontrolera.
@Controller javna klasa CircularViewPathController {@GetMapping ("/ path") javni put niza () {return "path2"; }}
Ako ne želimo preimenovati prikaz i promijeniti povratnu vrijednost u metodi kontrolera, drugo je rješenje odabrati drugi procesor prikaza za projekt.
Za najčešće slučajeve možemo odabrati mehanizam predloška Thymeleaf Java. Dodajmo i opruga-čizma-starter-majčina dušica ovisnost o projektu:
org.springframework.boot spring-boot-starter-thymeleaf
Nakon obnove projekta možemo ga ponovno pokrenuti i zahtjev je uspješan. U ovom slučaju, Thymeleaf zamjenjuje InternalResourceView razred.
5. Zaključak
U ovom smo vodiču pogledali pogrešku puta kružnog pogleda, zašto se to događa i kako riješiti problem. Kao i uvijek, puni izvorni kôd članka dostupan je na GitHub-u.