###前提・実現したいこと
初心者です。
SpringBoot+Thymeleaf+Javaで入力ページを作っています。
・参考サイトを見てサンプルを作ったのですが、うまく動作をしません。
・エラーメッセージについて検索してみたのですが理解ができませんでした。
・th:object="${formObj}"、th:field="*{...}"関連の部分をなくすと動作しますが、POSTの値をオブジェクトで受け取りたいのですが、どうすればいいのでしょうか。。。
###発生している問題・エラーメッセージ
ビルド時にはコンソールにエラー等は表示されませんが、画面を読み込みすると、以下のエラーが出て内部エラー500になります。
java.lang.IllegalStateException:
Neither BindingResult nor plain target object for bean name 'formObj' available as request attribute
###ソースコード
Java
1//InputSampleController.java 2// パッケージは省略 3import java.util.ArrayList; 4import java.util.List; 5 6import org.springframework.boot.autoconfigure.SpringBootApplication; 7import org.springframework.stereotype.Controller; 8import org.springframework.web.bind.annotation.ModelAttribute; 9import org.springframework.web.bind.annotation.RequestMapping; 10import org.springframework.web.bind.annotation.RequestMethod; 11import org.springframework.web.servlet.ModelAndView; 12 13import com.sample.example.dto.FormObj; 14 15@SpringBootApplication 16@Controller 17public class InputSampleController { 18 19 // ************************** 20 // テンプレートを出力 21 // ************************** 22 @RequestMapping(value = "test/formsample", method = RequestMethod.GET) 23 public ModelAndView formsample() { 24 return setFormsampleView(); 25 } 26 27 public ModelAndView setFormsampleView() { 28 ModelAndView mv = new ModelAndView("test/formsample"); 29 List<String> list = new ArrayList<String>(); 30 list.add("aaa"); 31 list.add("bbb"); 32 list.add("ccc"); 33 list.add("ddd"); 34 35 mv.addObject("list", list); 36 return mv; 37 } 38 39 // ************************** 40 // フォームからPOSTされた値を取得 41 // ************************** 42 @RequestMapping(value = "/form", method = RequestMethod.POST) 43 public ModelAndView sampleForm(@ModelAttribute("formObj") FormObj formObj) { 44 45 // 確認用 46 System.out.println("1:" + formObj.getName()); 47 System.out.println("2:" + formObj.getNumber()); 48 System.out.println("3:" + formObj.isAiueo()); 49 System.out.println("4:" + formObj.getSelectedItem()); 50 51 // ※サンプルのため特に何もしていない 52 return setFormsampleView(); 53 } 54}
Java
1// FormObj.java 2public class FormObj { 3 4 private String fullname; 5 6 private String number; 7 8 private boolean isAiueo; 9 10 private String selectedItem; 11 12// getter、setter省略 13}
HTML
1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<title>入力サンプル</title> 5<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6 7<link href="../../static/css/bootstrap/bootstrap.min.css" 8 th:href="@{/css/bootstrap/bootstrap.min.css}" rel="stylesheet" /> 9<link href="../../static/css/bootstrap/bootstrap-theme.min.css" 10 th:href="@{/css/bootstrap/bootstrap-theme.min.css}" rel="stylesheet" /> 11<script type="text/javascript" 12 src="../../static/js/jquery-1.12.0.min.js" 13 th:src="@{/js/jquery-1.12.0.min.js}"></script> 14<script type="text/javascript" 15 src="../../static/js/bootstrap/bootstrap.min.js" 16 th:src="@{/js/bootstrap/bootstrap.min.js}"></script> 17</head> 18 19<body> 20 <div style="height: 95%"> 21 <div class="white" style="width:50%; margin:20px auto;"> 22 <form action="/form" method="post" th:object="${formObj}"> 23 <label id="caption">入力してください。</label> 24 <div class="form-group"> 25 <label for="fullname">名前</label> 26 <input type="text" class="form-control" name="fullname" th:field="*{fullname}"/> 27 </div> 28 <div class="form-group"> 29 <label for="number">番号</label> 30 <input type="text" class="form-control" name="number" th:field="*{number}"/> 31 </div> 32 <div class="radio form-group" style="margin-top: 10px" th:field="*{isAiueo}"> 33 <label> 34 <input type="radio" name="radio1" value="あいうえお" checked="checked" /> 35 あいうえお 36 </label> 37 <label> 38 <input type="radio" name="radio1" value="かきくけこ" /> 39 かきくけこ 40 </label> 41 </div> 42 <div class="form-group"> 43 <label>選択してください</label> 44 <select class="form-control" name="selectedItem" th:field="*{selectedItem}"> 45 <option value="0">---選択してください---</option> 46 <option th:each="item : ${list}" th:value="${item}" th:text="${item}"></option> 47 </select> 48 </div> 49 <div Align="center"> 50 <input class="btn btn-primary" id="orderBtn" type="submit" value="go!" /> 51 </div> 52 </form> 53 </div> 54 </div> 55</body> 56</html>
###補足情報(言語/FW/ツール等のバージョンなど)
IE11
springBootVersion = '1.3.1.RELEASE'
thymeleafVersion = '2.1.4.RELEASE'
開発環境はeclipseです。
まったく原因がわからないため、ご教示いただけたらと思います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/05 07:00