こんにちは!私は春の研究を始めています、私は同じ方法でチュートリアルに従っていますが、それはエラーを返します:
フォルダー構造:
奇妙なことに、「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>
誰かがどこが間違っているのか教えてもらえますか?
解決策:コントローラークラスに対して@Controller
を使用している場合、MVCコントローラークラスとして扱われます。ただし、RESTFul Webサービスで使用される特別なコントローラーが必要な場合は、@Controller
アノテーションとともに@ResponseBody
を使用するか、Controller
クラスで@RestController
を直接使用できます。 RestFul Webサービスを使用してSpringBootプロジェクトを作成しているときに同じエラーが発生したため、問題は解決しました。
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";
}
}
pom.xml内に正しいthymeleaf依存関係があることを確認します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Deepakが回答したように、メインクラスは他のパッケージより上位のルートパッケージにある必要があります。しかし、これを実行したくない場合は、以下を使用できます。
@SpringBootApplication(scanBasePackages = {"com.other.packages","com.other"})
public class SpringAppApplication {
.....
}
いくつかの理由により、SpringBootの初心者として、このエラーは少なくとも一度は誰でも発生する可能性があります。
@SpringBootApplication
_または_extends SpringBootApplication
_を使用して表す必要があります@RestController
_アノテーションを見逃す可能性があります。@PostMapping("/save")
または@GetMapping("/id")
など)@RequestMapping("/customer")
(コントローラークラスでアノテーションが使用可能な場合)またはURLのスペルミスが見落とされる可能性があります。