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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Spring Boot

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

Q&A

1回答

7354閲覧

HTMLのformクラスでint型の項目を空白で送信するとエラーになる

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Spring Boot

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

0グッド

0クリップ

投稿2019/11/23 12:37

編集2022/01/12 10:55

HTMLのtextで設定した、(Formクラスでintの型)項目だけ空白でPOST送信するとその項目が400エラーで引っかかる。

実現したいこと:家計簿を作っており、登録の際は金額(int型)の項目は空白があり得ないためExceptionやアノテーションでエラーチェックをしたて400エラーを回避したい。

Formクラスで@Notnullを使っているのに機能しない

エラー内容
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sat Nov 23 21:11:15 JST 2019
There was an unexpected error (type=Bad Request, status=400).
Validation failed for object='kakeiboForm'. Error count: 1
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'kakeiboForm' on field 'kingaku': rejected value []; codes [typeMismatch.kakeiboForm.kingaku,typeMismatch.kingaku,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [kakeiboForm.kingaku,kingaku]; arguments []; default message [kingaku]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'kingaku'; nested exception is java.lang.NumberFormatException: For input string: ""]

HTML(name="kingaku"が空白だとエラーになり、数値を入れるとエラーにならない)

<td><input type="text" name="date" th:value="${date}"></td> <td><label for="koumoku"></label> <select name="koumoku" id="koumoku"> <option value="syokuhi">食費</option> <option value="syokuhi2">食費(雑)</option> <option value="nitityouhin">日用品</option> <option value="hoken">保険</option> </select></td> <td><input type="text" name="kingaku" value=""></td> <td><input type="text" name="syousai" value=""></td> <td><input type="text" name="bikou" value=""></td>

Formクラス
public class KakeiboForm {
@NotNull
private String date;
private String koumoku;
@NotNull
private int kingaku;
private String syousai;
private String bikou;
(以下、setter、getter)

Controllerクラス
@GetMapping("/")
public ModelAndView index(ModelAndView mav,@Validated KakeiboEntity kakeiboentity,BindingResult result) {
mav.setViewName("init");
Date date=new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String today=sdf.format(date);
mav.addObject("date",today);
mav.addObject("title", "タイトル");
return mav;
}

@PostMapping("/insert") public String insert(@ModelAttribute KakeiboForm form, Model model) { model.addAttribute("msg","登録しました"); return "update"; (現時点では未実装) }

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

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

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

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

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

guest

回答1

0

SpringMVCのControllerでは、Validationした結果を格納するBindingResultをメソッドの引数に追加しないと、SpringはValidationの結果を無視して指定のフィールドへ型を無視して格納します。

注意点として、Validation対象クラス(ここではKakeiboForm)の 直後に宣言 することで、もし型が合わない場合はその結果が格納される仕組みです。(直後に宣言しないと無視されます)

java

1@PostMapping("/insert") 2public String insert(Model model, @ModelAttribute KakeiboForm form, BindingResult bindingResult) { 3 model.addAttribute("msg","登録しました"); 4 return "update"; 5}

投稿2019/11/23 13:38

A-pZ

総合スコア12011

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

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

退会済みユーザー

退会済みユーザー

2019/11/23 16:50

400エラーで落ちなくなりました。ありがとうございます。 (Model model, @ModelAttribute KakeiboForm form, BindingResult bindingResult)←記述する順番は決まっているのでしょうか。 また、HTML上の金額(name="kingaku")のtextが空白だった場合にHTML上に金額を入力してくださいといった文言を出力するにどうすればよろしいでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問