いつもお世話になります。今、springの入力チェックのところを勉強させていただいております。
http://tech.pjin.jp/blog/2016/05/30/springframework6/
のサイトを参考にさせていただいています。
elipse 4.5を利用しています。
Spring Legacy ProjectのSimple Spring Web Mavenでプロジェクトを作成しました。
デフォルトのindex.jspを以下のように変更しました。
webapp/index.jsp
<!DOCTYPE html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <%@ taglib prefix="f" uri="http://www.springframework.org/tags/form"%> <html> <head> <meta charset="utf-8"> <title>ログイン</title> </head> <body> <f:form modelAttribute="loginForm" action="login" method="post"> <div> ユーザ名:<input type="text" id="loginName" name="loginName"> <f:errors path="loginName" element="div" cssStyle="color:red" /> </div> <div> パスワード:<input type="text" id="loginPassword" name="loginPassword"> <f:errors path="loginPassword" element="div" cssStyle="color:red" /> </div> <div> <input type="submit" value="ログイン"> </div> </f:form> </body> </html>
submitのボタンを押すと
jp.ssie.helloworld.web.LoginController
package jp.ssie.helloworld.web; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import jp.ssie.helloworld.form.LoginForm; import jp.ssie.helloworld.validation.GroupOrder; @Controller public class LoginController { @RequestMapping(value = "/", method = RequestMethod.GET) public String index(Model model) { return "index"; } @RequestMapping(value = "/login", method = RequestMethod.POST) public String login(Model model, @Validated(GroupOrder.class) @ModelAttribute("loginForm") LoginForm loginForm, BindingResult result) { if(result.hasErrors()) { return "index"; } model.addAttribute("loginName", loginForm.getLoginName()); return "top"; } }
のPostに飛びます。未入力の際、エラーメッセージが出力されます。
このような原因は、postしたときwebapp/WEB-INF/viewにindex.jspがないです。
ただ、jp.ssie.helloworld.web.LoginControllerでgetしたときは、webapp/index.jspに飛ぶのに
postしたら、webapp/WEB-INF/viewにとぶのでしょうか。設定の方法がわからないので教えてほしいです。
また、エラー画面でApache Tomcat/6.0.37と表示されています。プロジェクトを実行するときtomcat7を使用したのにこのような画面がでるのは、おかしいのですがspring側で設定を変える必要があるのでしょうか。
【質問内容まとめ】
・getのときは、webapp/index.jspへ流れるが、postのときは、なぜ、webapp/WEB-INF/viewに流れるのか理由がしりたいのとこの設定を変えるための方法も知りたい。
・tomcat7でプロジェクトを実行したのに、エラー内容でtomcat/6.0.37とでるのはなぜか理由が知りたいです。
よろしくおねがいします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/25 22:44
2016/08/25 22:46
2016/08/25 22:49