Spring Boot Ismeretek I. 27-es rész - Exception kezelés

0 értékelés
85 megtekintés
bugus (4 pont) kérdezte Feb 1.

Sziasztok,

Elakadtam a Spring Boot Ismeretek 27. JPA szintaktika résznél a searchForUser funkciónál. Minden tökéletesen működik (ha létező címet adok meg, akkor az a story jelenik meg, ha nem létező címet adok meg, akkor hibát dob az oldal), kivéve ha nem adok meg semmilyen címet, mert ebben az esetben nem ebbe a searchForUser funkcióba fut bele a kódom a HomeControlleren belül, hanem az error funkcióba, vagyis az ErrorPageControllerbe. És nem értem ennek az okát. Tud valaki segíteni, mit rontottam el?

Bemásolom ide a searchForUser funkciót:

@RequestMapping("/title/{title}")
public String searchForUser(@PathVariable(value = "title") String title, Model model) throws Exception {
    if (title == null)
        throw new Exception("Nincs ilyen címmel sztorink!");
    model.addAttribute("story", storyService.getSpecificStory(title));
    return "story";
}

2 Válasz

0 értékelés
Sztyopu Haladó Felhasználó (117 pont) válaszolta meg Feb 24.

Nem igazán értem a problémád.

if (title == null)
        throw new Exception("Nincs ilyen címmel sztorink!");

Azt mondod a kódban, hogyha title egyenlő null(az az "üres") akkor dobjon Exception-t, vagyis hibát. Pontosan ezt csinálja. Szóval a kód jó. 

0 értékelés
bugus (4 pont) válaszolta meg Feb 25.

Szia,

Az volt a probléma, hogy ha nem írok be címet a ...title/ mögé URL-be, akkor nem kaptam sosem

"Nincs ilyen címmel sztorink!" exceptiont, habár azt kellett volna kapnom.

Erre a megoldás, hogy 2 helyen kell kiegészíteni a kódot: egyszer a pathnál a  "/title" - lel, a másik hely pedig a pathvariable sor, ahol a value után be kell még írni a required = false - t.

Bármelyik kimarad, nincs exception.

Egyben a megoldás így néz ki, utána pedig már jó a kód, ezért nem másolom be:

@RequestMapping(path = {"/title", "/title/{title}"})
public String searchForUser(@PathVariable(value = "title", required = false) String title, Model model) throws Exception { ...
wia Haladó Felhasználó (293 pont) szólt hozzá Feb 25.
Én szívesebben használnék reguláris kifejezést:

https://www.logicbig.com/how-to/code-snippets/jcode-spring-mvc-requestmapping-regex.html

Ez így azt jelenti hogy az id a-z angol közötti abc karakterekből állhat és legalább 1 hosszú, a számosnál hasonlóan.

Én külön kontroller akcióba szervezném ki a sima title-t mert azért az mégis más eset.
bugus (4 pont) szólt hozzá Már 5.
Igen, ezeket persze mindent lehetne, csak nálam a videóban bemutatott kód nem működött és erre találtam megoldást. Így már működik a kód, lehet szépíteni, akár az általad leírtak szerint is persze.
...