Saat menggunakan initbinder untuk verifikasi, beberapa data yang dikirimkan dalam pengontrol ini harus bersifat bisnis, yaitu, itu hanya akan digunakan dalam situasi verifikasi yang relatif kompleks. Sebagian besar verifikasi bentuk sederhana dapat diselesaikan dengan menggunakan verifikasi anotasi.
Untuk penggunaan verifikasi anotasi, silakan merujuk ke: http://www.vevb.com/article/136448.htm
Satu hal yang perlu diperhatikan di sini: initbinder dan anotasi hanya dapat memilih salah satu dari dua verifikasi. Jika initbinder digunakan, verifikasi anotasi tidak dapat digunakan.
Konfigurasi sebelumnya dari web.xml dan spring.xml tidak akan diulang, silakan merujuk ke konfigurasi di tautan di atas. Persis sama.
Langsung unggah kode:
1. Kelas Entitas Model User5
Paket com.my.controller.bean; import java.util.date; kelas publik User5 {private long id; nama string pribadi; kata sandi string pribadi; createTime tanggal pribadi; usia int pribadi; publik long getId () {return id; } public void setId (Long ID) {this.id = id; } public string getName () {return name; } public void setName (name string) {this.name = name; } public string getPassword () {return kata sandi; } public void setPassword (kata sandi string) {this.password = kata sandi; } tanggal publik getCreateTime () {return createTime; } public void setCreateTime (date createTime) {this.createTime = createTime; } public int getage () {usia kembali; } public void setage (int usia) {this.age = usia; }}2. Tambahkan validator baru:
Paket com.my.controller.validator; impor org.springframework.stereotype. com.my.controller.bean.user5; @ComponentPublic kelas testValidator mengimplementasikan validator {@Override public boolean dukungan (kelas <?> paramClass) {return user5.class.equals (paramClass); } @Override public void validate (objek obj, kesalahan kesalahan) {user5 user = (user5) obj; Validationutils.REbTifEmptyorWhitespace (kesalahan, "nama", "valid.name", null, ""); if (user.getage () <18) {errors.RectValue ("usia", "valid.agemin", objek baru [] {"usia", 18}, "Usia tidak boleh kurang dari {1} tahun"); }}}@Component perlu ditambahkan di sini dan DI disuntikkan
3. Pengontrol
Paket com.my.controller; impor java.util.linkedhashmap; impor java.util.list; impor java.util.map; impor javax.validation.valid; impor org.springframework.beans.factory.annotation.Autowired; impor org.spramework.beans.factory.annotation.Autowired; Impor org.spramework.beans.factory.annotation.Autowired; Impor org.spramework org.springframework.stereotype.controller; impor org.springframework.validation.bindingResult; impor org.springframework.validation.fielderror; impor org.springframework.validation.validator; impor org.springpramework org.springframework.web.bind.annotation.initbinder; impor org.springframework.web.bind.annotation.modelattribute; impor org.springframework.web.bind.annotation.requestmapping; impor org.springframework.wind.notation.notasi; org.springframework.web.servlet.ModelAndView;import com.my.controller.bean.User5;@Controller@RequestMapping(value="binder")public class TestInitBinderController { @Autowired @Qualifier(value="testValidator") private Validator validator; @Initbinder Private Void initbinder (WebDatabinder Binder) {binder.setValidator (validator); } @RequestMapping (method = requestMethod.get) public string index () {return "/testinitbinder/index"; } @RequestMapping (value = "add", Method = requestMethod.post) Public ModelAndView Add (@ModelAttribute @Valid user5 pengguna, hasil BINDINGRESULT) {ModelAndView View = new ModelAndView ("TestInitBinder/Index"); view.addObject ("pengguna", pengguna); if (result.haserrors ()) {list <fielderror> errs = result.getFielderRors (); Peta <string, string> mapErrors = new LinkedHashMap <String, String> (); untuk (fielderror err: errs) {system.out.println ("ObjectName:" + err.getObjectName () + "/tFieldName:" + err.getField () + "/tFieldValue:" + err.getRECTEDValue ()) + "/tMessage:" + err.getdefaultM () ()) + "/tmessage:" + err.getDefaultM ()) + "/tMessage:" + err.getDefaultM () ()) + "/tMessage:" + err.getDefaultM () () + "/tmessage:" + err.getDefauldMMAULTM () () + "/tMessage:" + ERG.getDefaultM () () () + "/tMessage:" + ERGGEDFAULD () () () () ()); maperrors.put (err.getField (), err.getDefaultMessage ()); view.addObject ("kesalahan", maperrors); } return view; } return view; }}Suntikkan validator ke pengontrol.
Bahkan, menggunakan initbinder, metode err.getDefaultMessage () dalam controller ADD tidak bisa mendapatkan pesan yang benar yang sesuai. Anda dapat melihat hasil cetak input akhir.
4. Lihat
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> <%@ 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 awalan = "form" uri = "http://www.springframework.org/tags/form"%html public html "-// w3c///dtml/dtml publicy///w3c//dtml/dtml publicing///w3c//dt. "http://www.w3.org/tr/html4/loose.dtd"><html><head><Meta http-equiv =" content-type "content =" text/html; body = bentuk = "FORMERS =" FORMORTS = "FORMERS = BODM-8"> 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="age" name="age" value = "$ {user.age}"/> <br/> <input type = "kirim" value = "add"/> <hr/> error: <br/> <form: errors path = "*"> </form: errors> </Form: Form> </body> </hhtml>Perhatikan bahwa Anda hanya dapat menggunakan <form: kesalahan/> untuk mendapatkan informasi kesalahan, dan <form: kesalahan/> ini harus ada dalam <form: form/>.
5. Tes Hasil
Klik Tambah Tombol:
Cetak:
Anda dapat melihat bahwa informasi kesalahan yang benar tidak dapat diperoleh di sini
Bahkan, ketika data yang dikirimkan dalam halaman bentuk yang sangat kompleks memiliki logika bisnis tertentu, InitBinder tidak boleh banyak digunakan, karena berkali -kali kita dapat menggunakan peta untuk memasukkan kesalahan ke dalamnya dan membacanya di halaman. Misalnya:
Peta <String, String> Kesalahan;
errors.add ("name", "nama pengguna tidak bisa kosong!");
:
:
Anda hanya perlu menggunakan:
<span style = "color: red;"> $ {errors.name} <span>Lakukan saja.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.