質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

2回答

12486閲覧

Spring Boot&Thymeleafで画面遷移できない

tallwide

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2018/11/03 06:02

編集2018/11/03 06:05

前提・実現したいこと

Spring BootとThymeleafの勉強中なのですが、
IndexページからTestページへの画面移動が出来ません。

発生している問題・エラーメッセージ

HTTP404 Webページが見つかりません

該当のソースコード

フォルダ構成

src-main┬java-sample┬controller┬Index.java | | └Test.java | └Application.java └resources┬config-application.yml └templates┬index.html └test.html

java

1package sample.controller; 2 3import org.springframework.stereotype.Controller; 4import org.springframework.web.bind.annotation.RequestMapping; 5 6@Controller 7public class Index { 8 9 @RequestMapping("/") 10 public String index() { 11 System.out.println("OK"); 12 return "index"; 13 } 14}

java

1package sample.controller; 2 3import org.springframework.stereotype.Controller; 4import org.springframework.web.bind.annotation.RequestMapping; 5import org.springframework.web.servlet.ModelAndView; 6 7@Controller 8public class Test { 9 10 @RequestMapping("/test") 11 public ModelAndView getCharacter(ModelAndView mav) { 12 System.out.println("OK"); 13 mav.setViewName("test"); 14 System.out.println("OK2"); 15 return mav; 16 } 17}

html

1<!DOCTYPE html> 2<html lang="ja" xmlns:th="http://www.thymeleaf.org"> 3<head> 4<meta charset="UTF-8"> 5<meta name="author" content="tallwide"> 6<title>test</title> 7</head> 8<body> 9 <a href="test.html" th:href="@{'test.html'}">リンク</a> 10</body> 11</html>

html

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<meta charset="UTF-8"> 5<title>Insert title here</title> 6</head> 7<body> 8<h1>Test</h1> 9</body> 10</html>

yaml

1spring: 2 thymeleaf: 3 mode: HTML

gradle

1buildscript { 2 ext { 3 springBootVersion = '2.1.0.RELEASE' 4 } 5 repositories { 6 mavenCentral() 7 } 8 dependencies { 9 classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 10 } 11} 12 13apply plugin: 'java' 14apply plugin: 'eclipse' 15apply plugin: 'org.springframework.boot' 16apply plugin: 'io.spring.dependency-management' 17 18group = 'com.test' 19version = '0.0.1-SNAPSHOT' 20 21// Javaバージョン 22def jdkVersion = 1.8 23sourceCompatibility = jdkVersion 24targetCompatibility = jdkVersion 25 26repositories { 27 mavenCentral() 28} 29 30 31dependencies { 32 33 implementation('org.springframework.boot:spring-boot-devtools') 34 implementation('org.springframework.boot:spring-boot-starter-web') 35 implementation('org.springframework.boot:spring-boot-starter-thymeleaf') 36 testImplementation('org.springframework.boot:spring-boot-starter-test') 37}

試したこと

・コンソール出力を処理の途中に挿し込んでみたところ、リンク先に対応したコントローラが動作していないことが判明しました。(Test.javaのコンソール出力処理がまったく行われない)
・SpringBootやThymeleafの入門サイトを多数確認し、リンクや@RequestMappingの引数を何度も書き直してみましたが、いずれの方法でも症状は改善しませんでした。

補足情報(FW/ツールのバージョンなど)

eclipse photon
gradle 4.10.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

indexページが表示できる前提で回答致します。

まず、testページが機能しているか、indexページと同じようにブラウザから直接testページにアクセスするなどして、testページが表示できることを確認してみてください。

testページが機能しているのであれば、index.htmlのソースだと思いますが、testページへのリンクの書き方を

html

1<a href="test.html" th:href="@{/test}">リンク</a>

としてみてください。

投稿2018/11/03 06:56

rubytomato

総合スコア1752

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tallwide

2018/11/03 09:20

指摘の通り修正したら期待の動作をさせられました。 ご協力ありがとうございます。
guest

0

そのリンクで(スプリングを挟まない)あれば、
src/main/resources/public の下の適切な位置に test.htmlがないからですね。

test.htmlがテンプレートディレクトリにいるので直接アクセスできません。

投稿2018/11/03 06:48

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問