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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Spring Boot

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

Q&A

解決済

1回答

414閲覧

JavaのSpringBootでのバリデーション処理がうまくいかない

uratarosu

総合スコア49

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Spring Boot

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

0グッド

0クリップ

投稿2022/05/21 15:25

編集2022/05/31 00:23

前提

Java11,Spring Boot ,MyBatis ,MySQL,Thymeleaf

コントローラークラスにあるindexメソッドにて
htmlのinputから受け取った値をバリデーションをかけて分岐する処理を書いています。

実現したいこと

inputの値が空白またはNullの時、エラー処理へ、正常な時な正常処理を行いたい。
Formの値がNullになるのでinputで受け取った値をFormに格納したい。

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

Form Formの値がNullになり、バリデーションによって全てエラーとして返されてしまう。※①System.out.println(Form)のFormの値がNull。 下記コントローラーのエラーの中にある※②のFormの値はinputの値が入ってきている。

該当のソースコード

public String index(@RequestParam("input") String input, @Validated Form Form,BindingResult result ,Model model) { ※①System.out.println(Form); Form.inputName = input; if (result.hasErrors()) { //エラーの場合の処理    ※②System.out.println(Form); } else {    //正常時の処理 } }

Form

1@Data 2public class Form { 3 4 @NotBlank(message = "名前を入力してください") 5 public String inputName; 6} 7

試したこと

Form.inputName = input;の位置を変えてみたり、Formの値の確認。
@NotBlankを別のアノテーション(@NotEmptyなど)に変更。※結果は変わらず。

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

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

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

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

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

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

dewa

2022/06/04 20:26

再現しません。Controllerのアノテーションやhtmlテンプレートファイルを省略せずに記載してみてください。 (気になるのは @RequestParam と(暗黙の) @ModelAttribute を両方利用しているのは意図しているのかというところです)
uratarosu

2022/06/16 16:41

お返事ありがとうございました。 @GetMapping("/calc") public String index(@RequestParam("input") String input, Model model,@Validated @ModelAttribute("form") Form form, BindingResult result) { //内容 } としたら行けました。 @ModelAttributeが必要だったみたいです。
guest

回答1

0

自己解決

@GetMapping("/calc")
public String index(@RequestParam("input") String input, Model model,@Validated @ModelAttribute("form") Form form, BindingResult result) {
//内容
}
としたら行けました。
@ModelAttributeが必要でした。

投稿2022/06/16 16:41

uratarosu

総合スコア49

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問