IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Aktivity
Avatar
Navry
Člen
Avatar
Navry:10.7.2018 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.7.2018 10:43
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:12.7.2018 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.7.2018 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.7.2018 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.7.2018 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.7.2018 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.7.2018 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.7.2018 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.7.2018 10:29
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:13.7.2018 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.7.2018 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.7.2018 9:22

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

new ModelAndView("/index.html")
 
Nahoru Odpovědět
14.7.2018 9:22
Avatar
Atrament
Tvůrce
Avatar
Odpovídá na Navry
Atrament:14.7.2018 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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
14.7.2018 11:21
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Atrament
Lubor Pešek:14.7.2018 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.7.2018 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
Tvůrce
Avatar
Odpovídá na Lubor Pešek
Atrament:14.7.2018 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.7.2018 14:05
Avatar
Atrament
Tvůrce
Avatar
Odpovídá na Lubor Pešek
Atrament:14.7.2018 14:29

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

 
Nahoru Odpovědět
14.7.2018 14:29
Avatar
Navry
Člen
Avatar
Navry:16.7.2018 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.7.2018 10:27
Avatar
Atrament
Tvůrce
Avatar
Odpovídá na Navry
Atrament:16.7.2018 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.7.2018 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.