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

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

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

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

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

Spring Boot

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

Q&A

解決済

2回答

2117閲覧

指定したテンプレートファイルが読み込まれない

aae_11

総合スコア178

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

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

Spring Boot

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

0グッド

0クリップ

投稿2020/04/25 08:41

編集2020/04/25 09:16

指定したテンプレートファイルが読み込まれない現象が起きてしまっています。
以下は、HeloController.javaです

package com.test.springboot; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; // import javax.transaction.Transactional; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; // import org.springframework.web.servlet.ModelAndView; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import com.shinya.springboot.repositories.MyDataRepository; @Controller public class HeloController{ @Autowired MyDataRepository repository; @RequestMapping(value = "/",method = RequestMethod.GET) public ModelAndView index(@ModelAttribute("formModel") MyData mydata,ModelAndView mav){ mav.setViewName("index"); mav.addObject("msg","this is sample content."); Iterable<MyData> list = repository.findAll(); mav.addObject("data",list); System.out.println("ok"); return mav; } @RequestMapping(value="/",method=RequestMethod.POST) @Transactional(readOnly=false) public ModelAndView form(@ModelAttribute("formModel") MyData mydata,ModelAndView mav){ repository.saveAndFlush(mydata); return new ModelAndView("redirect:/"); } } class DataObject{ private int id; private String name; private String value; public DataObject(int id, String name, String value){ super(); this.id = id; this.name = name; this.value = value; } public int getId(){ return id;} public void setId(int id){ this.id = id;} public String getName() { return name;} public void setName(String name){ this.name = name; } public String getValue(){ return value; } public void setValue(String value){ this.value = value; } }

以下は、index.htmlです

<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>top page</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style> h1{ font-size:18pt; font-weight:bold; color:gray; } body{ font-size:13pt; color:gray; margin:5px 25px;} tr { margin:5px;} th{ padding:5px; color:white; background:darkgray;} td{ padding:5px;color:black;background:#e0e0ff;} </style> </head> <body> <h1 th:text="#{content.title}">Helo page</h1> <table> <form method="post" action="/" th:object="${formModel}"> <tr> <td><label for="name">名前</label></td> <td><input type="text" name="name" th:value="*{name}"></td> </tr> <tr> <td><label for="age">年齢</label></td> <td><input type="text" name="age" th:value="*{age}"></td> </tr> <tr> <td><label for="mail">メール</label></td> <td><input type="text" name="mail" th:value="*{mail}"></td> </tr> <td><label for="memo">メモ</label></td> <td><textarea name="memo" th:text="*{memo}" cols="20" rows="5"></textarea> </tr> <tr> <td></td><td><input type="submit"></td> </tr> </form> </table> <hr/> <table> <tr><th>ID</th><th>名前</th></tr> <tr th:each="obj : ${datalist}"> <td th:text="${obj.id}"></td> <td th:text="${obj.name}"></td> </tr> </table> </body> </html>

実行は、「Eclipse」より実行させ、アクセスはブラウザに「http://localhost:8080/」と打ち込み行いました。
その結果は以下になります。
イメージ説明

明らかに、index.htmlのマークダウンで登録してある内容とは異なる表示がされています。
「templates」フォルダ内には、他に「index.html」ファイルは存在しない状態です。
イメージ説明
行なったこととしては、ブラウザの更新、キャッシュの削除とハード再読み込み、spring devtoolsの導入、Eclipseの再起動、などしましたが結果は同じでした。
こちらの現象の解決方法がありましたら、教えて貰えたら幸いです。

実行環境:
Eclipseのバージョン: Version: 2019-12 (4.14.0)
OS: MacOSMojave

追記
「templates」フォルダ内の「index.tpl」を削除しましたら、以下の表示に変わりました。
イメージ説明

HeloController内の「index」メソッド内の「System.out.println("ok");」ここの部分Eclipseのコンソールに出力されていることから、indexメソッド内にリクエストは渡ってきていることは確認できています

追記2
下記は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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.shinya.springboot</groupId> <artifactId>MyBootApp</artifactId> <version>0.0.1-SNAPSHOT</version> <name>MyBootApp</name> <description>Demo project for Spring Boot</description> <properties> <java.version>8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-groovy-templates</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/04/25 09:14

? pom.xml の指定あやまってるのでは
aae_11

2020/04/25 09:17

pom.xmlを追記しました。 指定というのは、どの部分のことになりますか...?
guest

回答2

0

ベストアンサー

拡張子 tpl

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-groovy-templates --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-groovy-templates</artifactId> </dependency>

拡張子 html

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>

拡張子 ftl

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-freemarker --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>

拡張子 mustache

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mustache --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mustache</artifactId> </dependency>

テンプレートエンジンのの拡張子「tpl」ではないからです。

投稿2020/04/25 09:28

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

m.ts10806

2020/04/25 09:34

groovyか 5年くらい触ってないから忘れてました
aae_11

2020/04/25 09:35

ご回答ありがとうございます。 「pom.xml」の以下の部分を、 「<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-groovy-templates</artifactId> </dependency>」 以下の部分に変更しましたら、解決しました。 「<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>」 pom.xmlの「dependency」の記述によって、読み込む拡張子が異なってくるのですね... 勉強になりました。
退会済みユーザー

退会済みユーザー

2020/04/25 09:43

掌(なんたら)が groovy 押しが激しいからなぁ java (spring boot) の参考書みたらまず「groovy 」での説明から入りだしたからww その被害者かも?
m.ts10806

2020/04/25 09:51 編集

>掌(なんたら) あまりその方の書籍は信用してないですね。某青本とか良い例。 どんなことでも同じですが理解してないのは入れないに限りますね。 パッケージ管理ツールは特に。理解して指定しないと大した機能もないのに重たいアプリケーションが出来上がってしまう。 (この質問者は何も理解してないようにしか見えないし、理解しようとしているようには思えない)
guest

0

「index」という名前がついたファイルがもう1つあるので、そっちが呼ばれてるのではないでしょうか。

何のために作ったか知らないですが、Controller側で拡張子まで指定してなければ何かしら不具合が起きてもおかしくないです。
フレームワーク側の仕様・読み込みの優先度などあるのかもしれませんが、拡張子だけ違う同じ名称のファイルを置いておいて「他にファイルは存在しない」は無理があります。
問題切り分けが甘いです。全部削除するとか移動するとか、それくらいまでやるべきです。

それに、作りながら考えるのではなく、先に考えてから作りましょう。
クラス名、フォルダ構成、ファイル名 など。

投稿2020/04/25 08:49

編集2020/04/25 08:56
m.ts10806

総合スコア80850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問