Controller nie wywołuje mi strony

0

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

@RestController
public class Company {

   @RequestMapping("login")
   public String company() {
       return "login";
   }
}
@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".

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.
0

Zmieniłem na

@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.
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.

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

Mam teraz

@Controller
public class Company {

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

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

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:

@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...

0

Tak to miało wyglądać?

@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.

0

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

0

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

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