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

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

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

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Java

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

Thymeleaf

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

Q&A

解決済

1回答

2100閲覧

SpringBoot(MVCモデル)の画面遷移方法がわからない

_mini

総合スコア15

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Java

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

Thymeleaf

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

0グッド

0クリップ

投稿2021/06/21 02:56

編集2021/06/21 04:04

従業員一覧画面(index.html)、従業員登録画面(add.html)、従業員編集画面(edit.html)の三つのHTMLを作成しcontrollerを使って一覧画面からデータの検索とそれぞれの登録画面、編集画面に遷移したいと考えています。
formも作成し、index.htmlにth:action="@{/edit}"などと設定して、controllerで設定してもWhitelabel Error Pageになってしまい遷移できません。
下にcontrollerとindex.htmlを記述します。controllerの書き方を教えていただきたいです。

@Controller public class EmployeeController { @GetMapping("/") public ModelAndView index(ModelAndView mav) { // 返却する画面のHTMLテンプレートを設定する。 mav.setViewName("index"); return mav; } @GetMapping("/search") public ModelAndView search(ModelAndView mav) { // 一覧画面のHTMLテンプレートを設定する。 mav.setViewName("index"); return mav; } @GetMapping("/add") public ModelAndView add(ModelAndView mav) { // 空白のフォームをSpringのModelAndViewに設定する。 mav.addObject("form", new EmployeeForm_add()); // 登録画面のHTMLテンプレートを設定する。 mav.setViewName("add"); return mav; } @GetMapping("/edit") public ModelAndView edit(ModelAndView mav) { // 空白のフォームをSpringのModelAndViewに設定する。 mav.addObject("form", new EmployeeForm_edit()); // 編集画面のHTMLテンプレートを設定する。 mav.setViewName("edit"); return mav; } }
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>従業員管理システム</title> <!-- CSS --> <style> .selector { display: flex; justify-content: center; } .selector-content { margin: 0 20px; } .index-table { width: 80%; margin: 30px auto; border: 1px solid #333; border-collapse: collapse } .index-table th, .index-table td { width: 20%; border: 1px solid #333; color: black; } .edit { text-align: center; width: 10%; } </style> </head> <body> <h1>従業員管理システム</h1> <hr> <h2>従業員一覧</h2> <span th:text="${message}">エラーメッセージ</span> <div class="selector"> <form th:action="@{/search}" method="get"> <tr> <th><label>部署</label></th> <td><select name="department" id="department"> <option value="00">部署を選択してください</option> <option value="10">営業部</option> <option value="20">生産管理部</option> <option value="30">設計部</option> <option value="40">経理部</option> <option value="50">経営企画部</option> <option value="60">人事部</option> <option value="70">総務部</option> <option value="80">広報部</option> <option value="90">役員</option> </select></td> </tr> <tr> <th><label>氏名</label></th> <td><input type="text"></td> </tr> <input class="selector-content" type="submit" value="検索"> </form> <form th:action="@{/add}" method="get"> <input class="selector-content" type="submit" value="新規登録"> </form> </div> <table class="index-table"> <thead> <tr> <th>従業員番号</th> <th>部署</th> <th>氏名</th> <th>備考</th> <th class="edit">&nbsp;</th> </tr> </thead> <tbody> <tr> <td>0001</td> <td>営業部</td> <td>山田太郎</td> <td>出向中</td> <td class="edit"> <form action="/edit" th:action="@{/edit}" method="get"> <input type="submit" value="編集"> </form> </td> </tr> </tbody> </table> </body> </html>
2021-06-21 13:00:30.357 ERROR 8060 --- [nio-8080-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet]  : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/edit.html]")] with root cause org.springframework.beans.NotReadablePropertyException: Invalid property 'deptno' of bean class [comprehensive.exercise.form.EmployeeForm_edit]: Bean property 'deptno' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

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

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

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

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

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

m.ts10806

2021/06/21 03:56

Whitelabel Error Page だけでなく、コンソールにエラー詳細出てませんか?
_mini

2021/06/21 04:03

クリックしたときにコンソールに表示されるエラーメッセージを追記いたしました。 他にも「at.org」から始まるものがずらっと表示されていますが、主要なメッセージを追記しています。
guest

回答1

0

ベストアンサー

エラーの通りEmployeeForm_edit()クラスの定義が間違っているのだ思います。

エラー読んだ感じ、ゲッターセッターの定義あたりかと。
エラーメッセージの読み方と対処, 検索や質問の原則

ただ、そこ直したとして現状だと/editに対して何もパラメータ渡していません。
設計どうなっているか分かりませんが「情報の編集」が目的のリクエストならば、編集対象の主キー情報(IDなど)は送るようにする必要があると思います。
hiddenでも良いし、action属性の設定値にURLパラメータを設定しても良いです。

そこは要件次第で。

投稿2021/06/21 04:26

m.ts10806

総合スコア80875

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

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

_mini

2021/06/21 04:55

クラス定義を見直したところ、画面の遷移が行えるようになりました。主キー情報を渡して編集ができるように考えてみます。 ありがとうございました。
m.ts10806

2021/06/21 05:05

ヒントになったようで何よりです。 今回はリクエストの問題ではなく別の定義の問題だったということは認識しておいてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問