Controller nie wywołuje mi strony

Controller nie wywołuje mi strony
J1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 224
0

Posiadam w resources w folderze templates folder login.html. Chciałbym tą stronę wywołać metodą w kontrolerze

Kopiuj
@RestController
public class Company {

   @RequestMapping("login")
   public String company() {
       return "login";
   }
}
Kopiuj
@SpringBootApplication
public class ComJonkSpringBootMvcApplication {

	public static void main(String[] args) {
		SpringApplication.run(ComJonkSpringBootMvcApplication.class, args);
	}
}

jednak zamiast wywołać stronę, to wypisuje mi na stronie tekst "login".

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0
  1. No to czemu masz RestController a nie Controller? Przecież z definicji RestController służy do wypluwania gołych danych przez restowe API o_O
  2. Żeby uniknąć takich głupich problemów warto nie polegać na tym że framework myśli za ciebie i zwracać ModelAndView z metod kontrolera które mają renderować jakiś widok. Zwracanie stringa to pewne uproszczenie kiedy nie przesylasz żadnych danych do widoku, ale jak widać w twoim przypadku ukryło to błędy.
J1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 224
0

Zmieniłem na

Kopiuj
@Controller
public class Company {

    @RequestMapping("login")
    public ModelAndView company(ModelAndView model) {
        model.addObject("login");
        return model;
    }
}
```

ale teraz podczas wejścia na adres wyrzuca
```java
javax.servlet.ServletException: Circular view path [login]: would dispatch back to the current handler URL [/login] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
```

Jak mam sprawdzić ViewResolver skoro jest to Spring Boot.
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

A może zaczniesz czytać dokumentacje zamiast zgadywać, co? o_O Zgadywanie i sklejanie losowych kawałków kodu z internetu, bez zrozumienia, to słaba metoda programowania.

Kopiuj
    @RequestMapping("/login")
    public ModelAndView company() {
        return new ModelAndView("login");
    }
J1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 224
0

Mam teraz

Kopiuj
@Controller
public class Company {

    @RequestMapping("/login")
    public ModelAndView company() {
        return new ModelAndView("login");
    }
}

a mimo to https://zapodaj.net/d0924bcd48762.png.html

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

A masz ten kod gdzieś w repo? Bo tak to sobie mozemy zgadywać to śmierci co zrobiłeś źle. Obstawiam że view resolver jest rypnięty, szczególnie że chyba defaultowy nie sprawdza .html tylko .jsp
Poza tym @RequestMapping(value = "/login", method = RequestMethod.GET)

Jeśli chodzi o pytanie jak konifigurować skoro to boot to:

Kopiuj
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        // coś tam tutaj
        super.configureViewResolvers(registry);
    }
}

I to jeden z powodów dla których odradzam używanie boota początkujacym, bo nie wiedzą skąd sie coś bierze...

J1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 224
0

Tak to miało wyglądać?

Kopiuj
@EnableWebMvc
@Configuration
public class HystrixMvcConfiguration extends WebMvcConfigurerAdapter {

   @Override
   public void configureViewResolvers(final ViewResolverRegistry registry) {
       registry.jsp("/WEB-INF/views/", ".jsp");
       super.configureViewResolvers(registry);
   }
}

A strony powinienem trzymać w resource w tym już gotowym folderze templates? Jednak gdy zmienię "/WEB-INF/views/" na "/templates/" to dalej wywala błąd. Zmieniłem jeszcze format strony na .jsp.

  • Rejestracja: dni
  • Ostatnio: dni
0

Logicznym byłoby ustawić .html zamiast .jsp posiadając stronę o takim rozszerzeniu.

Julian_
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1703
0

Mam ten sam problem przed chwilą. Wystarczyło dodać dependency Thymeleaf.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.