Immer noch die gleichen alten Regeln, direkt auf den Punkt. Bei der Entwicklung übergeben wir häufig Parameter aus HTML und JSP an den Hintergrund. Allerdings kommt es häufig vor, dass die übergebenen Daten im Hintergrund in ein Objektformat zusammengestellt werden müssen. Zu diesem Zeitpunkt spielt die von Spring bereitgestellte @initBinder-Annotation eine große Rolle.
Im folgenden Beispiel erstellen wir eine JavaBean (Benutzername, Passwort, E-Mail-Adresse und Geburtsdatum eines Benutzers) und erstellen zwei benutzerdefinierte Validierungsklassen. Beim ersten Schritt überprüfen wir den Benutzernamen und das Passwort. Beim zweiten Schritt überprüfen wir die E-Mail-Adresse
Validator ist eine Schnittstelle mit zwei Methoden
boolesche Unterstützungen; Klasse> clazz) : Eine Instanzklasse, die prüft, ob die Parameter erfolgreich überprüft wurden
void validieren(Objektziel, Fehlerfehler) : Wenn unterstützt() Methode Gibt true zurück, das Zielobjekt ist zulässig Errors.rejectValue() Methode registriert Fehlerinformationen mit einem Feldnamen; 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 }
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 }
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 }
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 }
<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>
Das obige ist der detaillierte Inhalt vonWie verwende ich WebDataBinder im Frühling?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!