Spring で WebDataBinder を使用するにはどうすればよいですか?

零下一度
リリース: 2017-07-18 09:56:41
オリジナル
2399 人が閲覧しました

要点を言えば、今でも同じ古いルールです。 開発時には、html や jsp からバックグラウンドにパラメータを渡すことがよくありますが、渡されたデータをバックグラウンドでオブジェクト形式に組み立てる必要があるという状況がよく発生します。最も一般的なのは enum 型です。このとき、Spring が提供する @initBinder アノテーションが大きな役割を果たします。

次の例では、JavaBean (ユーザー名、パスワード、メールアドレス、生年月日) を作成し、2 つのカスタム検証クラスを作成します。まず、ユーザー名とパスワードを検証します。メール、

Eclipse のデモの構造


Validator は 2 つのメソッドを備えたインターフェイスです。

ブール値をサポートします(Class< ;?>) ;クラッズ) :パラメータが正常に検証されたかどうかを確認するインスタンス クラス。
void validate(Object target, Errorserrors) :
support() メソッドが true を返す場合、ターゲット オブジェクトは正当です。使用されたフィールド名登録エラー メッセージ;
Uservalidator.java

 1 package com.concretepage.validators; 2 import org.springframework.stereotype.Component; 3 import org.springframework.validation.Errors; 4 import org.springframework.validation.ValidationUtils; 5 import org.springframework.validation.Validator; 6 import com.concretepage.User; 7 @Component 8 public class UserValidator implements Validator  { 9     @Override10     public boolean supports(Class<?> clazz) {11         return User.class.isAssignableFrom(clazz);12     }13     @Override14     public void validate(Object target, Errors errors) {15         User user = (User)target;16         ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "","Username is empty");17         ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "", "Password is empty");18         if (user.getName().length()<5) {19             errors.rejectValue("name","", "Username length is less than 5");20         }21     }22 }
ログイン後にコピー
UserValidator.java
EmailValidator.java
 1 package com.concretepage.validators; 2 import org.springframework.stereotype.Component; 3 import org.springframework.validation.Errors; 4 import org.springframework.validation.ValidationUtils; 5 import org.springframework.validation.Validator; 6 import com.concretepage.User; 7 @Component 8 public class EmailValidator implements Validator { 9     @Override10     public boolean supports(Class<?> clazz) {11         return User.class.isAssignableFrom(clazz);12     }13     @Override14     public void validate(Object target, Errors errors) {15         User user = (User)target;16         ValidationUtils.rejectIfEmptyOrWhitespace(errors, "email", "","Email is empty");17         if (!user.getEmail().contains("@")) {18             errors.rejectValue("email","", "Email is not valid.");19         }20     }21 }
ログイン後にコピー
EmailValidator . java
User.java
 1 package com.concretepage;
 2 import java.util.Date;
 3 public class User {
 4     private String name;
 5     private String password;
 6     private String email;
 7     private Date dob;
 8     public String getName() {
 9         return name;
10     }
11     public void setName(String name) {
12         this.name = name;
13     }
14     public String getPassword() {
15         return password;
16     }
17     public void setPassword(String password) {
18         this.password = password;
19     }
20     public String getEmail() {
21         return email;
22     }
23     public void setEmail(String email) {
24         this.email = email;
25     }
26     public Date getDob() {
27         return dob;
28     }
29     public void setDob(Date dob) {
30         this.dob = dob;
31     }
32 }
ログイン後にコピー
User.java
MyWorldController
 1 package com.concretepage; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4  5 import javax.validation.Valid; 6  7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.propertyeditors.CustomDateEditor; 9 import org.springframework.stereotype.Controller;10 import org.springframework.ui.ModelMap;11 import org.springframework.validation.BindingResult;12 import org.springframework.web.bind.WebDataBinder;13 import org.springframework.web.bind.annotation.InitBinder;14 import org.springframework.web.bind.annotation.ModelAttribute;15 import org.springframework.web.bind.annotation.RequestMapping;16 import org.springframework.web.bind.annotation.RequestMethod;17 import org.springframework.web.servlet.ModelAndView;18 19 import com.concretepage.validators.EmailValidator;20 import com.concretepage.validators.UserValidator;21 @Controller22 @RequestMapping("/myworld")23 public class MyWorldController {24     @Autowired25     private UserValidator userValidator;26     @Autowired27     private EmailValidator emailValidator;28 29     @RequestMapping(value="signup", method = RequestMethod.GET)30     public ModelAndView user(){31         return new ModelAndView("user","user",new User());32     }33     @InitBinder34     public void dataBinding(WebDataBinder binder) {35         binder.addValidators(userValidator, emailValidator);36         SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");37         dateFormat.setLenient(false);38         binder.registerCustomEditor(Date.class, "dob", new CustomDateEditor(dateFormat, true));39     }40     41     @RequestMapping(value="save", method = RequestMethod.POST)42     public String createUser(@ModelAttribute("user") @Valid User user,BindingResult result, ModelMap model) {43         if(result.hasErrors()) {44             return "user";45         }46         System.out.println("Name:"+ user.getName());47         System.out.println("Email:"+ user.getEmail());48         System.out.println("Date of Birth:"+ user.getDob());49         model.addAttribute("msg", "Welcome to My World!");50         return "success";51     }    
52 }
ログイン後にコピー
MyWorldController
ページフォーム
  <form:form action="save" method="post" commandName="user"><tr>  <td>User Name:</td> <td><form:input  path="name"/> </td> 
          <td> <form:errors path="name" cssStyle="color: red;"/></td> </tr><tr> <td> Password :</td> <td><form:input path="password"/> </td> 
         <td> <form:errors path="password" cssStyle="color: red;"/> </td> </tr><tr> <td>  Email :</td> <td><form:input path="email"/> </td> 
         <td> <form:errors path="email" cssStyle="color: red;"/> </td> </tr><tr> <td>  Date of Birth :</td> <td><form:input path="dob"/> </td> 
         <td> <form:errors path="dob" cssStyle="color: red;"/> </td> </tr>         <tr> <td colspan=3>   <input type="submit"> </td>
  </form:form>
ログイン後にコピー

 

以上がSpring で WebDataBinder を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!