Добрый день! Я начинаю весенние занятия, так же следую учебному пособию, но оно возвращает ошибку:

enter image description here

Структура папки:

enter image description here

Странная вещь: если я вставлю «EventoController.java» в br.com.SpringApp.SpringApp, он будет работать правильно.

package br.com.SpringApp.SpringApp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringAppApplication {

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

.

package br.com.SpringApp.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class EventoController {

    @RequestMapping("/cadastroEvento")
    public String form() {      
        return "evento/formEvento"; 
    }

}

По запросу я добавляю pom.xml

   <?xml version="1.0" encoding="UTF-8"?>
   <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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>br.com.SpringApp</groupId>
    <artifactId>SpringApp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>SpringApp</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


   </project>

Может кто-нибудь сказать мне, где я не прав, пожалуйста?

18
sounobre 28 Фев 2018 в 19:28

4 ответа

Убедитесь, что у вас есть правильная зависимость thymeleaf в вашем pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>      
</dependency>
1
senape 28 Фев 2018 в 16:43

Будучи новичком в Spring Boot, эта ошибка может случиться с кем-то хотя бы один раз, по нескольким причинам.

  1. Класс Application (например, SpringAppApplication.java) должен находиться на корневом уровне, а классы контроллеров могут быть размещены на том же уровне или, возможно, в подкаталоге. Этот класс приложения должен быть обозначен с помощью @SpringBootApplication или extends SpringBootApplication
  2. Вы можете пропустить @RestController аннотацию в верхней части класса контроллера.
  3. Или можно пропустить аннотацию сопоставления. (@PostMapping("/save") или @GetMapping("/id") и т. Д.)
  4. наконец, просто проверьте, правильно ли вы вводите адрес сопоставления запроса (URL), можете ли вы пропустить косую черту или @RequestMapping("/customer") (если аннотация доступна в вашем классе контроллера) или орфографическую ошибку в URL.
0
Ruchira Supipi 23 Фев 2020 в 06:54

Как ответил Дипак, основной класс должен находиться в корневом каталоге над другими пакетами. Но если вы не хотите этого делать, вы можете использовать:

@SpringBootApplication(scanBasePackages = {"com.other.packages","com.other"})
public class SpringAppApplication {
.....
}
0
JasonD 4 Сен 2019 в 15:55

Решение: Если вы используете @Controller над классом Controller, он будет рассматриваться как класс контроллера MVC. Но если вы хотите, чтобы в веб-сервисах RESTFul использовался специальный контроллер, вы должны использовать @Controller вместе с аннотацией @ResponseBody, либо вы можете напрямую использовать @RestController над классом Controller. Это сработало для меня, так как я получал ту же ошибку при создании проекта SpringBoot с веб-сервисами RestFul.

package br.com.SpringApp.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class EventoController {

    @RequestMapping("/cadastroEvento")
    @ResponseBody
    public String form() {      
        return "evento/formEvento"; 
    }

}

Или же:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
public class EventoController {

    @RequestMapping("/cadastroEvento")
    public String form() {      
        return "evento/formEvento"; 
    }

}
1
Claude 12 Дек 2019 в 07:02