Spring MVC nie widzi view resolvera (Java Config)

0

Hejka

Mam sobie taki oto projekt:
screenshot-20180318231103.png
Łapię 404 - a to niespodzianka. Wygląda tak jakby Spring nie korzystał z resolvera, który zdefiniowałem w klasie Main:

@EnableWebMvc
@Configuration
@ComponentScan("com.burdzi0.mvc")
public class Main {

    @Bean
    public InternalResourceViewResolver getInternalResourceViewResolver() {
        String prefix = "/WEB-INF/jsp/", suffix = ".jsp";
        return new InternalResourceViewResolver(prefix, suffix);
    }
}

Mam kontroller:

@Configuration
public class DefaultController {

    @RequestMapping("/")
    public String index(Model model) {
        model.addAttribute("title", "TITLE");
        model.addAttribute("body", "BODY");
        return "hello";
    }
}

do pliku jsp:

<%--
  Created by IntelliJ IDEA.
  User: burdzi0
  Date: 18.03.18
  Time: 22:35
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>${title}</title>
</head>
<body>
<p>${body}</p>
</body>
</html>

oraz mój config:

@Configuration
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Nullable
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{WebConfig.class};
    }

    @Nullable
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }
}

Czy korzystam z dobrych klas/interfejsów do Java Configu? Gdzie może leżeć błąd?

Robiłem według tego tutoriala: https://howtodoinjava.com/spring5/webmvc/spring5-mvc-hibernate5-example/

0

Robisz według tutoriala a gdzie masz klasę od Konfiguracji Hibernate'a?

0

@Kuba_or_JJ: Nie korzystam z Hibernate (co swoją drogą nie powinno w tym wypadku nic zmieniać).
Pom wygląda następująco:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.burdzi0</groupId>
  <artifactId>MVC</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>MVC Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <dependencies>

      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.0.4.RELEASE</version>
      </dependency>

      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.0.4.RELEASE</version>
      </dependency>

      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
      </dependency>

      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
      </dependency>

  </dependencies>


    <build>
        <finalName>MVC</finalName>
    </build>
</project>
0

Nad controllerem masz @Configuration, to może być przez to.

0
Szalony Terrorysta napisał(a):

Nad controllerem masz @Configuration, to może być przez to.

Jesteś wielki! ale głupi błąd ;)

1
@Configuration
public class DefaultController {

A nie czasem @Controller zamiast @Configuration?

edit: too late :P

Na przyszłość, jeśli używasz IntelliJ Ultimate to masz widok Spring który między innymi pokazuje wykryte endpointy MVC. Oprócz tego przy @ComponentScan w konfiguracji masz ikonkę która wylistuje wszystkie wykryte beany, w tym kontrolery.

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