Spring - przekazywanie parametru przy redirect

Odpowiedz Nowy wątek
2019-05-09 11:30
0

Hej,
mam pewien problem z przekazywaniem parametru przy przekierowaniu. Otóż na stronie index.html mam pewien prosty formularz z jednym polem, do którego użytkownik wpisuje tekst, a następnie serwis przetwarza go w pewien sposób - jednak nie jest to za bardzo istotne. Pod formularzem w thymeleafie dałem instrukcje warunkową, według której przetworzony tekst będzie wypisywany.
Nie ogarniam jednak do końca przekazania parametru przy przekierowaniu i zamiast przeładowanej strony index pokazuje mi się strona błędu z informacją:

EDIT: Źle nazwałem parametr w formularzu, teraz to poprawiłem, lecz wiadomość błędu która teraz się pojawia brzmi następująco

There was an unexpected error (type=Internal Server Error, status=500).
No message available

W logach konsoli widzę NullPointerException, ale skąd on wynika?

Metody w kontrolerze wyglądają tak:

To jest metoda mapująca stronę główną, na której jest formularz.

 @RequestMapping("/")
    public String home(@RequestParam(required = false, defaultValue = "") String statement, Model model){
        model.addAttribute("statement", statement);
        return "index";
    }

Akcja formularza natomiast jest zmapowana na /translate i tutaj wykonuję sobie w serwisie pewne operacje na parametrze z formularza, a później chciałbym zwrócić wynik z powrotem do indexu.

    @PostMapping("/translate")
    public String translate(@RequestParam String statement, Model model){
        translatorService.setNaturalLanguageStatement(statement);
        model.addAttribute("statement",translatorService.getNaturalLanguageStatement());
        return "redirect:/index";
    }
}

Mam nadzieję, że w miarę przejrzyście opisałem problem. Nie chcę tego robić w javascripcie, bo nie ogarniam go w ogóle i nauka JS dopiero przede mną.
Z góry dzięki za pomoc i pozdrawiam :)

edytowany 1x, ostatnio: Belka, 2019-05-09 11:52

Pozostało 580 znaków

2019-05-09 12:22
0

Wydaje mi się że te dane przechwycone powinieneś trzymać w sesji.
Tutaj playlista z większą ilością informacji:

Wydaje mi się że zasada działania zostaje ta sama.

Pozostało 580 znaków

2019-05-09 22:42
0

Głownie skupiłem się na debugowaniu kodu i zlikwidowaniu NullPointerException. Okazało się, że był związany z problemami z wstrzykiwaniem zależności w pewnej klasie abstrakcyjnej. Może się komuś przyda informacja, że w sytuacji, gdy chcemy wstrzyknąć zależność do klasy abstrakcyjnej za pomocą @Autowired, to należy oznaczyć klasę potomną jako @Component i też dać @Autowired w konstruktorze, jednocześnie wywołując w nim konstruktor klasy nadrzędnej (abstrakcyjnej). Dzięki temu autowiązanie zadziała tak jak powinno. Dziś już jestem śpiący, ale jutro popatrzę na ten mariał wideo i spróbuję to zastosować u siebie, bo to już w zasadzie ostatnia prosta w tej aplikacji ;)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0