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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Thymeleaf

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

Apache Maven

Apache Mavenは、ソフトウェアプロジェクトの管理ツールです。

Spring Boot

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

Q&A

解決済

2回答

3439閲覧

Controller->Thymeleafへの画面遷移

kanetugu_70e

総合スコア100

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Thymeleaf

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

Apache Maven

Apache Mavenは、ソフトウェアプロジェクトの管理ツールです。

Spring Boot

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

0グッド

0クリップ

投稿2019/03/19 18:04

編集2019/03/24 14:17

状況・実現したいこと

spring bootを使用して、Controllerからviewへ画面遷移させたいのですが、"Whitelabel Error Page"となってしまいます。
404の為、Mappingが上手くいっていないと考えておりますが、どこが間違っているのか見当もつかない状態です。

試した事

1).@RestControllerを使用して単純な文字列をreturnする場合は、問題無く表示できる事を確認しています。
2).thymeleafのクラスパスや、html側のxmlns及びタグを付け外ししてみましたが、変化ありません。
3).画面の指示通り、ErrControllerとerror.htmlを作成してみましたが、今度はステータス"500"のエラーとなってしましました。
4).エントリポイントクラスと、Controllerの配置が同一パッケージである事は確認しており、Contorollerを子パッケージに入れてみましたが効果ありませんでした。
5).Eclipseエディタ上で、コード自体のエラーや警告はありません。
配置

###エラー画面
エラー画面

"localhost:8080/"アクセス時コンソール出力

2019-03-20 02:24:40.382 INFO 13048 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-03-20 02:24:40.382 INFO 13048 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2019-03-20 02:24:40.388 INFO 13048 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 6 ms

コード

java

1package com.example.dev; 2import org.springframework.stereotype.Controller; 3import org.springframework.ui.Model; 4import org.springframework.web.bind.annotation.RequestMapping; 5 6@Controller 7public class HelloWorldController { 8 @RequestMapping("/") 9 public String helloWorld(Model model){ 10 model.addAttribute("message","Hello World!"); 11 return "index"; 12 } 13}

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 <span th:text="${message}">あああ</span> 9</body> 10</html>

pom

1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-parent</artifactId> 8 <version>2.1.3.RELEASE</version> 9 <relativePath/> <!-- lookup parent from repository --> 10 </parent> 11 <groupId>com.example.dev</groupId> 12 <artifactId>bikeEC</artifactId> 13 <version>0.0.1-SNAPSHOT</version> 14 <name>bikeEC</name> 15 <description>Demo project for Spring Boot</description> 16 <properties> 17 <java.version>1.8</java.version> 18 </properties> 19 <dependencies> 20 <dependency> 21 <groupId>org.springframework.boot</groupId> 22 <artifactId>spring-boot-starter-web</artifactId> 23 </dependency> 24 25 <dependency> 26 <groupId>org.springframework.boot</groupId> 27 <artifactId>spring-boot-starter-test</artifactId> 28 <scope>test</scope> 29 </dependency> 30 <dependency> 31 <groupId>org.springframework.boot</groupId> 32 <artifactId>spring-boot-starter-thymeleaf</artifactId> 33 </dependency> 34 </dependencies> 35 36 <build> 37 <plugins> 38 <plugin> 39 <groupId>org.springframework.boot</groupId> 40 <artifactId>spring-boot-maven-plugin</artifactId> 41 </plugin> 42 </plugins> 43 </build> 44</project>

環境

・Eclipse2017 ver4.10.0
・Spring Boot 2.1.3
・Thymeleaf 2.1.3

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

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

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

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

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

guest

回答2

0

私も全くの初心者でこの間勉強がてらやったのと環境が整っていたのでやってみました。

環境


Eclipse 2018-12
Java 1.8
Spring Boot 2.1.3.RELEASE
Spring Tool Suite 3.9.6 (Eclipseプラグイン)
Thymeleaf 2.1.2

結局の所RequestMappingの("/")を("index.html")に変えました。
@RequestMapping("index")なら、URLにはlocalHost:8080/indexとなるようです。
どこのページへアクセスしたのかは分かりませんが404ページ無しエラーの様です。

java

1package com.example.Dev; 2 3import org.springframework.stereotype.Controller; 4import org.springframework.ui.Model; 5import org.springframework.web.bind.annotation.RequestMapping; 6 7@Controller 8public class HelloWorldController { 9 @RequestMapping("index.html") //ここが実URL 10 public String helloWorld(Model model){ 11 model.addAttribute("message","Hello World!"); 12 return "index"; //ここはindexでもindex.htmlでも良い?と思う。 13 } 14}

また、"/"ルートでアクセスして"/index.html"ページへ飛ぶには以下の様なソースが必要だと思います。

java

1import org.springframework.context.annotation.Configuration; 2import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; 3import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 4 5@Configuration 6public class MvcConfig implements WebMvcConfigurer{ 7 public void addViewControllers(ViewControllerRegistry registry) { 8 registry.addViewController("/").setViewName("index"); 9 } 10}

また、以下は"/"と"/index.html"どちらにアクセスしてもmessageをやりとりする複数パラメーターの方法。

java

1import org.springframework.stereotype.Controller; 2import org.springframework.ui.Model; 3import org.springframework.web.bind.annotation.RequestMapping; 4 5@Controller 6public class HelloWorldController { 7 @RequestMapping(value = {"/", "index.html"}) 8 public String helloWorld(Model model){ 9 model.addAttribute("message","Hello World!"); 10 return "index"; 11 } 12}

まだ回答がなかったので参考まで。

pom.xml

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-parent</artifactId> 8 <version>2.1.3.RELEASE</version> 9 <relativePath/> <!-- lookup parent from repository --> 10 </parent> 11 <groupId>com.example</groupId> 12 <artifactId>BikeEc</artifactId> 13 <version>0.0.1-SNAPSHOT</version> 14 <name>BikeEc</name> 15 <description>Dev project for Spring Boot</description> 16 17 <properties> 18 <java.version>1.8</java.version> 19 </properties> 20 21 <dependencies> 22 <dependency> 23 <groupId>org.springframework.boot</groupId> 24 <artifactId>spring-boot-starter-thymeleaf</artifactId> 25 </dependency> 26 <dependency> 27 <groupId>org.springframework.boot</groupId> 28 <artifactId>spring-boot-starter-web</artifactId> 29 </dependency> 30 31 <dependency> 32 <groupId>org.springframework.boot</groupId> 33 <artifactId>spring-boot-starter-test</artifactId> 34 <scope>test</scope> 35 </dependency> 36 </dependencies> 37 38 <build> 39 <plugins> 40 <plugin> 41 <groupId>org.springframework.boot</groupId> 42 <artifactId>spring-boot-maven-plugin</artifactId> 43 </plugin> 44 </plugins> 45 </build> 46 47</project>

投稿2019/03/24 11:53

編集2019/03/25 02:42
shinami

総合スコア334

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

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

kanetugu_70e

2019/03/24 13:15

ご回答頂きありがとうございます。 ご記載頂いた内容で書き換えてみましたが、相変わらずErrorページとなります。コピペもしてみましたが、変化ありません。 コード上エラーも無くコピペしてもダメなので、根本的に設定がどこか誤っているのかもしれません。改めて環境から見直してみます。
shinami

2019/03/25 02:40

バージョンを落としたら変わるのは確かに何かおかしいですねぇ。 私自身詳しくないので根本的な事が分かってないのかもしれませんし。 pom.xmlは何も変えずSpringBootスタータープロジェクトでできるそのままを使いました。 デフォルトのですがpom.xmlを上記へ追加しておきます。 htmlとクラスファイルの追加以外に特別何かしたと言えばエクスプローラー上で右クリックの 実行(R)→6.Maven Installをしたぐらいです。
退会済みユーザー

退会済みユーザー

2019/03/25 03:23

バージョンをおとして成功するのはJARファイルのDLに失敗してる
kanetugu_70e

2019/03/25 09:27

今一ピンとこないのですが、何故バージョン落としで成功する事がJARのDL失敗となるのでしょうか? 経験則や、同様事例から来る判断なのか、それとも根本的なロジックからの判断なのか宜しければご教授下さい。
退会済みユーザー

退会済みユーザー

2019/03/25 12:18

maven でダウンロードしてると * invalid LOC header * invalid CEN header になっている jar ファイルができてることがあるのよ これが発生するとダウンロードさせなおさないと正常に起動しない コアなライブラリでの発生だと起動時にどっちかが出てくれるんだけどね。。。
rubytomato

2019/03/25 12:40

kanetuguさん もう一度バージョンを2.1.3に戻して同じエラーがでるか(再現性があるか)確認することはできますか? 試して頂ける場合は、バージョン変更後にプロジェクトを右クリックし"Maven" → "Project Update..." → Update Maven Project画面でOKボタンをクリックで、プロジェクトを更新してください。
shinami

2019/03/26 13:39

詳しいですねぇ。 質問者さんがプロジェクトを削除してしまってるかどうかですよね・・・。
kanetugu_70e

2019/03/30 03:30

ご連絡が遅くなり申し訳ございません。それぞれ結果をご報告致します。 1)mavnプロジェクトの更新  更新を実施しましたが、変化はありませんでした。 2)jarファイルの再DL  .m2リポジトリ内のファイルを削除し、ver2.1.3で再度ビルドを実施したところ、無事ver2.1.3で利用することが出来ました。 私のネットワーク環境がマンション契約であり非常に回線が重い為、ご指摘頂いた通りファイル破損となっていたのかもしれません。 (正確な測定ではありませんが、現代のGbps時代にも関わらず、平均1Mbpsしか出ないのでビルドに非常に時間が掛かります...) 皆様、ご助力頂きありがとうございました!
guest

0

自己解決

追記.2019/3/30

.m2リポジトリ内の各フォルダを削除後、再DL(ビルド)を実施する事で無事解決致しました。
コメントで頂いた内容によりますと、ビルド時にDLされたjarファイルの破損が原因との事です。

[.m2リポジトリ パス]※windowsの場合
ユーザー名/.m2/repository/

記.2019/3/25

結果から述べると、使用するSpring Bootのバージョンを2.1.3→2.0.2へ落としました。
その為、ver2.1.3使用環境での根本的な解決にはなっていませんが、一応手順と修正後のpom.xmlを記載します。

1).pom.xmlのparentタグ内にあるversionタグのリリースナンバーを書き換える。
2).保存してビルド完了を待つ...。(eclipse右下の"%"参照)
3).ビルド後、エクスプローラ上に警告×印残るが、そのまま実行!!!
(※spring-core.jarとjdkバージョンが合っていないのかメソッド呼び出しが上手くいっていないみたい。実行には問題なし。)
警告消すだけなら、--illegal-accessを無効にしてやれば良い。
解決するには、buildタグ内のpluginでバージョン指定 or そもそものjdkバージョンを変える??

pom

1<?xml version="1.0" encoding="UTF-8"?> 2<!-- ルートタグ。基本的には決まった記述の為コピペでおk。 --> 3<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <!-- POMのバージョン。特に変更の必要なし --> 6 <modelVersion>4.0.0</modelVersion> 7 <!--プロジェクトが引き継ぐ親プロジェクトを指定。 8 ここでは、springフレームワークを指定している --> 9 <parent> 10 <!-- プロジェクト名(ルートパッケージ) --> 11 <groupId>org.springframework.boot</groupId> 12 <!-- プロジェクト名 --> 13 <artifactId>spring-boot-starter-parent</artifactId> 14 <!-- バージョン指定 --> 15 <version>2.0.2.RELEASE</version> 16 <!-- 親プロジェクトのパス? 省略で外部リポジトリから参照?? --> 17 <relativePath/> <!-- lookup parent from repository --> 18 </parent> 19 <!-- プロジェクト名。プロジェクトのルートパッケージを指定する。 --> 20 <groupId>com.example.dev</groupId> 21 <!-- プロジェクト成果物の名前。jar,war,earファイルの名前となる --> 22 <artifactId>bikeEC</artifactId> 23 <!-- プロジェクト自体のバージョン。自由記述? --> 24 <version>0.0.1-SNAPSHOT</version> 25 <!-- プロジェクト表示名。ドキュメント作成時に使用される。 --> 26 <name>bikeEC</name> 27 <!-- 説明文。あってもなくても良い? --> 28 <description>Demo project for Spring Boot</description> 29 <!-- maven及びプラグインが参照するプロパティ。 30 子要素タグ名がプロパティ名/その値がプロパティ値となる。 --> 31 <properties> 32 <!-- ↓の場合は、プロパティ:javaのバージョン=>プロパティ値:1.8の意--> 33 <java.version>1.8</java.version> 34 </properties> 35 <!-- プロジェクトが依存するライブラリ情報のルート。 36 この中に、dependencyタグで依存ライブラリを記述 --> 37 <dependencies> 38 <!-- 各ライブラリ情報の親タグ --> 39 <dependency> 40 <!-- 識別名 --> 41 <groupId>org.springframework.boot</groupId> 42 <!-- 拡張子除いたファイル名 --> 43 <artifactId>spring-boot-starter-web</artifactId> 44 </dependency> 45 46 <dependency> 47 <groupId>org.springframework.boot</groupId> 48 <artifactId>spring-boot-starter-test</artifactId> 49 <scope>test</scope> 50 </dependency> 51 <dependency> 52 <groupId>org.springframework.boot</groupId> 53 <artifactId>spring-boot-starter-thymeleaf</artifactId> 54 </dependency> 55 </dependencies> 56 <!-- ビルドに関する情報。(plugin) 57 いくつかは標準でロードされるが、mavenのバージョンに依存する為、jdkに合わせてビルド 58 する場合などは、新しいバージョンのプラグインを明示する必要がある。 --> 59 <build> 60 <!-- pluginの親タグ。配下にpluginタグを入れる。 --> 61 <plugins> 62 <!-- 各pluginを記述。今回は書いてないが、versionタグも必要あれば書く? --> 63 <plugin> 64 <groupId>org.springframework.boot</groupId> 65 <artifactId>spring-boot-maven-plugin</artifactId> 66 </plugin> 67 </plugins> 68 </build> 69</project> 70

投稿2019/03/24 14:48

編集2019/03/30 03:39
kanetugu_70e

総合スコア100

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問