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"; (現時点では未実装) }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/11/23 16:50