SpringMVCで数値のValidationチェックする方法
SpringMVCで数値のValidationチェックをします。Validation用ライブラリなどの設定は「SpringMVCでValidationチェックする」を参照してください。
マイナス入力は不可にするようにしてみたいと思います。
フォームにpriceを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package jp.co.confrage; import java.io.Serializable; import javax.validation.constraints.Min; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.validator.constraints.NotEmpty; @Data @AllArgsConstructor @NoArgsConstructor public class HomeForm implements Serializable { private static final long serialVersionUID = 1L; @NotEmpty private String keyword; @Min(0) private String price; } |
@Min(0)とすることで最低でも0以上でないとエラーになるようにアノテーションを指定します。
次に送信ボタン押下時のコントローラは以下です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package jp.co.confrage; import javax.validation.Valid; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("sample") public class PostController { private static final Logger logger = LoggerFactory.getLogger(PostController.class); @RequestMapping(value="post", method=RequestMethod.POST) public String post(@Valid HomeForm form,BindingResult result,Model model) { logger.info("Post : " + form.getKeyword()); // エラーの場合 if(result.hasErrors()) { return "home"; } model.addAttribute("postData", form.getKeyword()); return "post"; } } |
最後にJSPです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Home</title> </head> <body> <h1> Hello world! </h1> <P> Welcome Sample Page. </P> <spring:url value="/sample/post" var="act" /> <form:form action="${act}" method="post" modelAttribute="homeForm"> <form:label path="keyword">入力</form:label> <form:input path="keyword" /> <form:errors path="keyword" cssStyle="color:red" element="div"/> <br> <form:label path="price">金額</form:label> <form:input path="price" /> <form:errors path="price" cssStyle="color:red" element="div"/> <input type="submit" value="送信" /> </form:form> </body> </html> |
試しに金額に-1を入力して送信すると以下のようにエラーが表示されます。
ちなみに2つともエラーとすると以下のようになります。
2つのエラーをまとめたい場合はform:errorsを一つにし、JSPのpath属性をワイルドカード(*)にします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Home</title> </head> <body> <h1> Hello world! </h1> <P> Welcome Sample Page. </P> <spring:url value="/sample/post" var="act" /> <form:form action="${act}" method="post" modelAttribute="homeForm"> <form:label path="keyword">入力</form:label> <form:input path="keyword" /> <br> <form:label path="price">金額</form:label> <form:input path="price" /> <form:errors path="*" cssStyle="color:red" element="div"/> <input type="submit" value="送信" /> </form:form> </body> </html> |
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^