Spring MVCフォーム – フィールドにエラーがあるかどうかをチェックする
この記事では、フィールドにエラーメッセージがあるかどうかを確認するSpringの `form tag`の例をいくつか紹介します。次のSpring MVC Beanの検証の例を確認してください。
使用される技術:
-
春4
-
JSTL 1.2
….//Bean validation
import org.hibernate.validator.constraints.NotEmpty;
public class User {
@NotEmpty String name; //... } //Controller class @RequestMapping(value = "/users", method = RequestMethod.POST) public String saveOrUpdateUser( @ModelAttribute("userForm") @Valid User user, BindingResult result, Model model) {
if (result.hasErrors()) { //... } else { //... } }
=== 1.形式:エラー 'name'フィールドにエラーメッセージがある場合は、それを `form:errors`で表示することができます
<%@ taglib prefix=”spring” uri=”http://www.springframework.org/tags”%>
<%@ taglib prefix=”form” uri=”http://www.springframework.org/tags/form”%>
<form:form method=”post” modelAttribute=”userForm” action=”${userActionUrl}”>
<label>Name</label>
<form:input path=”name” type=”text” id=”name”/>
<form:errors path=”name”/>
</form:form>
=== 2. spring:バインドとフォーム:エラー `spring:bind`では` $ {status.error} `を使って 'name'フィールドにエラーがあるかどうかをチェックし、条件に応じて異なるCSSクラスを表示することができます。
<form:form method=”post” modelAttribute=”userForm” action=”${userActionUrl}”>
<spring:bind path=”name”>
<div class=”form-group ${status.error ? ‘has-error’ : ”}”>
<label>Name</label>
<form:input path=”name” type=”text” id=”name”/>
<form:errors path=”name”/>
</div>
</spring:bind>
</form:form>
エラーメッセージは `form:errors`を介して表示されますが、より多くのコントロールを得ることができます。 === 3. c:セットとフォーム:エラー 例2と同じように、 `c:set`を使って 'name'フィールドにエラーメッセージがあるかどうかを調べます。
<form:form method=”post” modelAttribute=”userForm” action=”${userActionUrl}”>
<c:set var=”nameHasBindError”>
<form:errors path=”name”/>
</c:set>
<div class="form-group ${not empty nameHasBindError?"has-error":""}"> <label>Name</label> <form:input path="name" type="text" id="name"/> ${nameHasBindError} </div> </form:form>
この例はちょっと変わっていますが、うまくいきます。 === 4.すべてのエラーを表示する 送信されたフォームにすべてのエラーメッセージを表示するには、 `spring:hasBindErrors`を使用し、` $ {errors.allErrors} `をループします。
<spring:hasBindErrors name="userForm"> <c:forEach var="error" items="${errors.allErrors}"> <b><spring:message message="${error}"/></b> <br/> </c:forEach> </spring:hasBindErrors>
あるいは、 `path =" ** "`
<form:form method=”post” modelAttribute=”userForm” action=”${userActionUrl}”>
<form:errors path=”** ” class=”has-error”/>
</form:form>
=== 参考文献 . http://docs.spring.io/spring/docs/current/spring-framework-reference/html/spring.tld.html[Spring タグ - bindタグとhasBindErrorsタグ]。 http://w//spring-mvc/spring-mvc-form-handling-example/ww.mkyong.com/spring-mvc/spring-mvc-form-handling-example/[Spring MVCフォームの処理例]。 link://spring-mvc/s//spring-mvc/spring-3-mvc-and-jsr303-valid-example/pring-3-mvc-and-jsr303-valid-example/[Spring MVCとJSR 303 @正当なbean検証の例] link://tag/jstl/[jstl]link://タグ/spring-form/[スプリングフォーム]link://tag/spring-mvc/[spring mvc]