เมื่อใช้ SpringMVC คุณมักจะพบการแปลงระหว่างสตริงวันที่ในรูปแบบและประเภทวันที่ของ Javabean ในขณะที่ SpringMVC ไม่สนับสนุนการแปลงในรูปแบบนี้โดยค่าเริ่มต้นดังนั้นคุณต้องกำหนดค่าและปรับแต่งข้อมูลที่มีผลผูกพันเพื่อแก้ปัญหานี้ด้วยตนเอง
ใช้คำอธิบายประกอบ SpringMVC @InitBinder และคลาส WebDateBinder ของ Spring เพื่อทำงานในคอนโทรลเลอร์ที่ต้องใช้การแปลงวันที่
WebDatabinder ใช้เพื่อผูกพารามิเตอร์คำขอกับตัวแก้ไขคุณสมบัติที่ระบุ เนื่องจากค่าที่ส่งผ่านไปยังคอนโทรลเลอร์ในเบื้องหน้าเป็นประเภทสตริงเมื่อตั้งค่าในโมเดลหากคุณสมบัติของชุดเป็นวัตถุสปริงจะพบตัวแก้ไขที่สอดคล้องกันสำหรับการแปลงแล้วตั้งค่าไว้
รหัสมีดังนี้:
@InitBinder เป็นโมฆะสาธารณะ initBinder (WebDatabinder Binder) {SimpledateFormat DateFormat = ใหม่ SimpleDateFormat ("YYYY-MM-DD"); DateFormat.setLenient (เท็จ); Binder.RegisterCustomEditor (วันที่. คลาสใหม่ CustomDateEditor (DateFormat, TRUE)); -จำเป็นต้องเพิ่มไฟล์การกำหนดค่าใน SpringMVC
<!-การลงทะเบียน Parser-> <bean> <property name = "MessageConverters"> <list> <ref bean = "StringhttpmessageConverter"/> </list> </property> </ebean> <!
เปลี่ยนการเขียน
<MVC: คำอธิบายประกอบ-ไดรฟ์> <MVC: ข้อความคอนเวอร์เตอร์> <bean> <constructor-Arg value = "UTF-8"/> </ebean> </mvc: Message-Converters> </mvc: Annotation-Driven>
ขยาย:
Spring MVC จะลงทะเบียนบรรณาธิการเหล่านี้ก่อนที่จะเชื่อมโยงแบบฟอร์ม ฤดูใบไม้ผลินั้นมีคลาสการใช้งานจำนวนมากเช่น CustomDateEditor, CustomBooleanEditor, CustomNumberEditor ฯลฯ ซึ่งโดยทั่วไปเพียงพอแล้ว
โทรหาวิธี registerCustomEditor ของ webDatabinder เมื่อใช้งาน
ซอร์สโค้ด registerCustomEditor:
Public Void RegisterCustomEditor (คลาส <?> EledentyType, PropertyEditor PertyEditor) {getPropertyeditorRegistry (). RegisterCustomEditor (ต้องการ TYPE, PertyEditor);} พารามิเตอร์แรกที่ต้องการประเภทคือประเภทที่ต้องแปลง
พารามิเตอร์ที่สอง PerperiTeditor เป็นตัวแก้ไขคุณสมบัติซึ่งเป็นอินเทอร์เฟซ ตัวอย่างดังกล่าวข้างต้นเช่น CustomDateEditor ทั้งหมดได้รับมรดกคลาส PertyEditorSupport ที่ใช้อินเทอร์เฟซนี้
เรายังไม่สามารถใช้คลาสโปรแกรมแก้ไขเหล่านี้ที่มาพร้อมกับพวกเขา
เราสามารถสร้างตัวเอง:
นำเข้า org.springframework.beans.propertyeditors.propertieseditor; คลาสสาธารณะ doubleeditor ขยาย Propertyeditorsupport {@Override โมฆะสาธารณะ setastext (ข้อความสตริง) โยน islendalargumentException {ถ้า (text == null || text.equals ("") } setValue (double.parsedouble (ข้อความ)); } @Override สตริงสาธารณะ getastext () {return getValue (). toString (); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น