Bei der Verwendung von Initbinder zur Überprüfung müssen einige der in diesem Controller eingereichten Daten von geschäftlicher Art sein, dh sie werden nur in relativ komplexen Überprüfungssituationen verwendet. Die meisten einfachen Formüberprüfung können unter Verwendung einer Annotationsüberprüfung gelöst werden.
Weitere Informationen zur Bestätigung der Annotation finden Sie unter: http://www.vevb.com/article/136448.htm
Eine Sache, die hier zu beachten ist: Initbinder und Annotation können nur einen von zwei Überprüfungen auswählen. Wenn Initbinder verwendet wird, kann die Annotationsüberprüfung nicht verwendet werden.
Die vorherigen Konfigurationen von web.xml und Spring.xml werden nicht wiederholt. Weitere Informationen finden Sie in der Konfiguration im obigen Link. Genau das gleiche.
Laden Sie den Code direkt hoch:
1. User5 Model Entity Class
Paket com.my.controller.bean; import java.util.date; public class user5 {private long id; privater Zeichenfolge Name; privates Zeichenfolgenkennwort; privates Date Createtime; privates int Alter; public long getid () {return id; } public void setId (Long id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public String getPassword () {Kennwort zurückgeben; } public void setPassword (String -Passwort) {this.password = password; } public date getCreateTime () {return CreateTime; } public void setCreateTime (Datum CreateTime) {this.createTime = CreateTime; } public int getage () {return ay; } public void setage (int age) {this.age = älter; }}2. Fügen Sie einen neuen Validator hinzu:
Paket com.my.controller.validator; import org.springframework.stereotype.component; import org.springframework.validation.Erors; com.my.controller.bean.user5; @ComponentPublic Class TestValidator Implements Validator {@Override public boolean unterstützt (Klasse <?> ParamClass) {return user5.class.equals (ParamClass); } @Override public void validate (Object OBJ, Fehler Fehler) {user5 user = (user5) obj; ValidationUtils.RejectifeMptyorWhiteSpace (Fehler, "Name", "valid.name", null, ""); if (user.getage () <18) {fehler.RejectValue ("Alter", "valid.agemin", neues Objekt [] {"Alter", 18}, "Alter kann nicht weniger als {1} Jahre sein"); }}}@Component muss hier hinzugefügt werden und DI wird injiziert werden
3. Controller
Paket com.my.controller; import Java.util.linkedHasMap; Import Java.util.List; Import Java.util.map; Import Javax.Validation.Valid; org. org.springframework.web.bind.annotation.initbinder; import org.springframework.web.bind.annotation.modelatTtribute import org.spingframework org.springframework.web.servlet.ModelandView; import com.my.controller.bean.user5; @controller @requestmapPing (value = "binder") public class testinitBindController {@autowired @Qualifier @Qualifier (Value = "TestValidator") privat validator ") private validator") privat validator ") privat validator") private validator ") private validator") private validator ") private validator") private validator ") private validator") private validator; @Initbinder private void initbinder (WebDatabinder Binder) {binder.setValidator (Validator); } @RequestMapping (methode = requestMethod.get) public String index () {return "/testinitbinder/index"; } @RequestMapping (value = "add", method = requestMethod.post) public modelAndView add (@modelAttribute @valid user5 user, BindingResult -Ergebnis) {modelAndView view = new modelAndView ("testinitbinder/index"); view.addObject ("Benutzer", Benutzer); if (result.hasErrors ()) {list <Fielderror> errs = result.getFielderrors (); Karte <string, string> mapErrors = new LinkedHashMap <String, String> (); für (fielderror err: errs) {System.out.println ("ObjectName:" + err.getObjectName () + "/tfieldname:" + err.getField () + "/tfieldValue:" + err.getRejectedValue () + "/tmessage:" + err.getFaultmessage ()); mapErrors.put (err.getfield (), err.getDefaultMessage ()); View.AddObject ("Fehler", MapErrors); } Return View; } Return View; }}Validator in den Controller injizieren.
Tatsächlich kann die Methode für Initbinder die entsprechende korrekte Nachricht nicht abrufen. Sie können das endgültige Ergebnis der Eingabedruck sehen.
4. Ansicht
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%@%@ taglib@ taglib@ taglib uri = "http://java.sun.com/jsp/jstl/fmt" prefix = "fmt"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/functions" prefix = "fn"%@ taglib Prefix = "ST" uri="http://www.springframework.org/tags" %><%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Init binder</title></head><body> <form:form action="/TestSpringMvc1/binder/add" method="post" modelAttribute="user5"> User name:<input type="text" id="name" name="name" value="${user.name}" /><br/> Password:<input type="text" id="password" name="password" value="${user.password}" /><br/> Age:<input type = "text" id = "älter" name = "age" value = "$ {user.age}"/> <br/> <Eingabe type = "value =" add "/> <hr/> fehler: <br/> <Formular: Fehler path ="*"> </Form: Fehler> </Form> </body> </html> </"Beachten Sie, dass Sie nur <Formular: Fehler/> verwenden können, um Fehlerinformationen zu erhalten, und dieses <Formular: Fehler/> muss in <Formular: Form/> sein.
5. Ergebnistest
Klicken Sie auf die Schaltfläche Hinzufügen:
Ausdruck:
Sie können sehen, dass die richtigen Informationen des Fehlers hier nicht erhalten werden können
Wenn die in einer sehr komplexen Formseite eingereichten Daten eine bestimmte Geschäftslogik haben, sollte Initbinder nicht viel verwendet werden, da wir oft eine Karte verwenden können, um Fehler in sie einzufügen und auf der Seite zu lesen. Zum Beispiel:
Karte <String, String> Fehler;
Fehler.Add ("Name", "Benutzername kann nicht leer sein!");
:
:
Sie müssen nur verwenden:
<span style = "color: rot;"> $ {fehler.name} <span>Tun Sie es einfach.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.