SpringMVCのValidationチェックでエラーメッセージを日本語にする
SpringMVCのValidationチェックでエラーメッセージを日本語にしてみます。
これはとても簡単でアノテーションにmessage=”エラーメッセージ”を記述すればそのエラーメッセージがそのまま表示されます。
デフォルトの英語が表示されるより断然便利です。
アクションフォームを以下に変更します。
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(message="必須項目です") private String keyword; @Min(value=0,message="0以上を入力してください") private String price; }
次に送信ボタン押下時のコントローラです。
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です。
<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>
以下、エラー画面です。
minのように複数の引数を指定する場合はvalueという名前で引数を指定する必要があります。
エラーメッセージはmessageを使用します。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント