スプリングブート1.5.2を使用していますが、スプリングレストコントローラーは次のようになります
@RestController
@RequestMapping("/")
public class HomeController {
@RequestMapping(method=RequestMethod.GET)
public String index() {
return "index";
}
}
http:// localhost:8090/assessment / にアクセスすると、コントローラーに到達しますが、src/main/resourcesまたはsrc /の下のmavenプロジェクトにあるindex.htmlを返しません。 main/resources/static。このURL http:// localhost:8090/assessment/index.html にアクセスすると、index.htmlが返されます。私はこのチュートリアルを見ました https://spring.io/guides/gs/serving-web-content/ 彼らはthymeleafを使用しています。ビューを戻すために、スプリングレストコントローラーにthymeleafなどを使用する必要がありますか?
私のアプリケーションクラスは次のようになります
@SpringBootApplication
@ComponentScan(basePackages={"com.pkg.*"})
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
Thymeleaf依存関係をクラスパスに追加すると、このエラー(500応答コード)が表示されます
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "index", template might not exist or might not be accessible by any of the configured Template Resolvers
私はthymeleafが必要なのでしょうか?ここで適切に設定してみます。
このようにindex.htmlを返すようにコントローラーメソッドを変更した後に機能します
@RequestMapping(method=RequestMethod.GET)
public String index() {
return "index.html";
}
Thymeleafまたはそのようなソフトウェアでは、ファイル拡張子を省略できますが、確かではありません。
あなたの例は次のようになります:
ルート「評価」を使用したコントローラーメソッド
@Controller
public class HomeController {
@RequestMapping(value = "/assessment", method = RequestMethod.GET)
public String index() {
return "index";
}
}
「src/main/resources/templates/index.html」にあるThymeleafテンプレート
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p>Hello World!</p>
</body>
</html>
RestControllerアノテーションは、HTMLまたはJSPではなくメソッドからjsonを返します。 @Controllerと@ResponseBodyを1つに組み合わせたものです。 @RestControllerの主な目的は、RESTful Webサービスを作成することです。 htmlまたはjspを返すには、単に@Controllerを使用してコントローラークラスに注釈を付けます。
詳細については、このリンクを thymeleaf documentation で見つけてください。
「springcofigrationaddapter」make MvcConfigクラス(これはビューリゾルバを追加する必要があります)およびユーザー@controllerに従ってビューリゾルバを設定しなかった可能性があるため、エラーが発生します
jsonタイプにしたい場合(AnjularJsプロジェクトとして)@RestControllerを使用してください)
構成クラスから@EnableWebMvc
注釈を削除することでこれを解決しました。
Spring MVC自動構成は、静的
index.html
サポートを提供します。Spring MVCを完全に制御したい場合は、
@Configuration
アノテーションが付いた独自の@EnableWebMvc
を追加できます。
Spring MVC Auto-configuration から詳細を取得してください。