Diskuze: Spring Boot - špatné mapování URL/cesta k souboru?

Java Java Spring Boot - špatné mapování URL/cesta k souboru? American English version English version

Aktivity (1)
Avatar
Navry
Člen
Avatar
Navry:10. července 10:43

Nejde mi zobrazit požadovaná stránka na základě zadaného URL.

Zkusil jsem: Zkoušel jsem 3 varianty:
1.

@RequestMapping("/uvod")
public ModelAndView index() {
        ModelAndView mv = new ModelAndView("index.html");
        System.out.println("INFO: zavolana metoda'index' tridy 'HomeController'");
        return mv;
}

Funguje: http://localhost:8080/uvod - normálně se zobrazí html stránka

2.

@RequestMapping("/uvod/seznam")
public ModelAndView index() {
        ModelAndView mv = new ModelAndView("index.html");
        System.out.println("INFO: zavolana metoda'index' tridy 'HomeController'");
        return mv;
}

Nefunguje: http://localhost:8080/uvod/seznam - zobrazí se Whitelabel Error Page - type=Not Found, status=404
Metoda se ale zavolá, protože do konzole se vypíše info.

3.

@RequestMapping("/uvod")
public class HomeController {
...
        @RequestMapping("/seznam")
        public ModelAndView index() {
                ModelAndView mv = new ModelAndView("index.html");
                System.out.println("INFO: zavolana metoda'index' tridy 'HomeController'");
                return mv;
        }
...
}

Nefunguje: http://localhost:8080/uvod/seznam - stejné jako u způsobu 2.
Také se metoda zavolá.

Soubor mám normálně ve složce webapp/index.html.

V application.pro­perties nemám použitý žádný z:

spring.mvc.view.prefix=
spring.mvc.view.suffix=

Chci docílit: Chtěl bych aby mě fungoval výše popsaný způsob 2 nebo 3.

 
Odpovědět 10. července 10:43
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:12. července 8:00

Dneska se ti na to mrknu. Chtěl jsem už předevčírem, ale není prostě čas:)
Nicméně jsem si s tím před týdnem hrál, tak ti to sem dneska postnu (hned jak bude chvilka)

Nahoru Odpovědět 12. července 8:00
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:12. července 11:01

No zkusil jsem si to a mě to normálně jede...

Co mě napadá, tak může být problém s tím prefix a surfix...
V jakém IDE to děláš?
Jaký používáš aplikační server?
Můžeš sem navrkat obě XMLka, kde to konfiguruješ? (případně, jestli to sosáš z toho properties souboru, tak i ten). To se takto těžko určuje, když postneš jen metody.

Nahoru Odpovědět 12. července 11:01
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:12. července 11:14

A nebo mě napadá ještě jiná věc....
Jestli jsi třeba špatně nenapsal cestu, k té stránce.

Pokud vycházíš třeba z applicationSer­ver:port/uvod
a pak z této stránky chceš odkazovat na tu stránku, kterou volá metoda pod /uvod/seznam, tak máš dvě možnosti.
Buď napsat absolutní cestu - /uvod/seznam a nebo stačí už jen relativně - seznam (bez lomítka)
To mě ještě napadá, že může být chyba, ale takto, když poskytneš pouze Controll metody, které určitě fungují správně (taky co je na nich k posrání), tak se to opravdu těžko určí:(

Nahoru Odpovědět 12. července 11:14
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Navry
Člen
Avatar
Navry:13. července 10:29

Vývojové prostředí mám Eclipse (Oxygen.3a Release (4.7.3a)).

Server ten co je embeded v Spring Bootu (Tomcat embed 8.5.31).

Konfigurační XML v projektu žádný nemám, mám jen application.pro­perties a tam mám jen nastavení MySQL.

Pokud vycházíš třeba z applicationSer­ver:port/uvod a pak z této stránky chceš odkazovat na tu stránku, kterou volá metoda pod /uvod/seznam, tak máš dvě možnosti.

Já jsem to nedělal přez žádný HTML odkaz, když jsem to zkoušel tak jsem tam adresu zadával natvrdo ručně.

 
Nahoru Odpovědět 13. července 10:29
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:13. července 11:51

ááha. No:) já vidím osobně už problém v tom, že jsi napsal, že máš eclipse:D:D:D Ale to neber vážně, to je jen moje ubohá poznámka, protože eclipsem bytostně pohrdám:) takže prosím, to fakt přejdi:)

Tomcat je už 9.0.1, ale na verzi nezáleží, to jen pro info.

Přes konfigurák properties nemám zkušenosti, to se přiznám. Využívám ho hlavně jako parametrický soubor, který můžu změnit, podle toho, jaké nastavení zrovna potřebuju. Nicméně nechápu, že nepracuješ aspoń s web.xml :o Jako je mi jasné, že existuje určitě mnoho způsobů, jak daný framework používat (a já znám jen jeden:) ), ale žil jsem v přesvědčení, že právě z tohoto XMLka SPRING vychází....

Mohl bych ti na to poslat tutorial. Ale jinak kdyžtak poskytni ten konfigurák. Ty metody máš v pořádku, v těch problém není. Problém bude spíš v tom konfiguráku.

PS: co zobrazuješ, když nemáš HTML? to jen pro info pro mě, abych se přiučil:) já umím jen HTMLko - podle tutorialu.

Nahoru Odpovědět 13. července 11:51
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Neználek
Člen
Avatar
Odpovídá na Navry
Neználek:14. července 9:22

Zkusil bych přidat lomítko do názvu view:

new ModelAndView("/index.html")
 
Nahoru Odpovědět 14. července 9:22
Avatar
Atrament
Člen
Avatar
Odpovídá na Navry
Atrament:14. července 11:21

Ten index.html by měl být v src/main/resou­rces/templates a doufám, že máš třídu HomeController s anotací @Controller

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 14. července 11:21
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Atrament
Lubor Pešek:14. července 13:58

Kdyby neměl, tak mu nefunguje ani první metoda (teda, za předpokladu, že má všechny v jednom controlleru)

Nahoru Odpovědět 14. července 13:58
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Atrament
Člen
Avatar
Odpovídá na Lubor Pešek
Atrament:14. července 14:05

Nevím proč mu to fungovalo v prvním případě, ale ve Spring Boot se prostě html soubory dávají tam kam jsem napsal, je to konvence a Spring Boot je tam očekává (pokud není nakonfigurován jinak).

 
Nahoru Odpovědět 14. července 14:05
Avatar
Atrament
Člen
Avatar
Odpovídá na Lubor Pešek
Atrament:14. července 14:29

Ah až teď mi docvaklo, žes reagoval na tu anotaci, neměl bych psát s kocovinou :)

 
Nahoru Odpovědět 14. července 14:29
Avatar
Navry
Člen
Avatar
Navry:16. července 10:27

Vyřešil to přesun do src/main/resou­rces/templates. Přitom v několika tutoriálech na Youtube dávali ty html soubory do src/main/webapp a fungovalo jim to s tím nejjednodušším mapováním (což mě fungovalo taky), ale ty druhé dva způsoby tam neukazovali. A dokonce tam nastavovali i prefix pomocí spring.mvc.vi­ew.prefix, ale zase např. se složkou src/main/webap­p/view a né s těma /resources/tem­plates.

Děkuju vám všem za rady.

 
Nahoru Odpovědět 16. července 10:27
Avatar
Atrament
Člen
Avatar
Odpovídá na Navry
Atrament:16. července 12:17

Spring je přesně ta technologie u které se rozhodně vyplatí věnovat čas přečtení některé z na něj zameřených knih. Tutoriály na youtube obvykle jenom povrchně ukážou jak něco rychle zbastlit bez hlubšího vhledu na to jak to funguje 'uvnitř' a nezřidka jsou vytvořené někým kdo sám se Springem teprve začíná.

 
Nahoru Odpovědět 16. července 12:17
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.