วิธีการผูกพารามิเตอร์ต่างๆของ SpringMVC
1. ประเภทข้อมูลพื้นฐาน (รับ int เป็นตัวอย่างอื่น ๆ คล้ายกัน):
รหัสคอนโทรลเลอร์:
@RequestMapping ("saysth.do") การทดสอบโมฆะสาธารณะ (จำนวน int) {}รหัสฟอร์ม:
<form action = "saysth.do" method = "post"> <input name = "count" value = "10" type = "text" />......<// ฟอร์ม>
หากค่าชื่อของอินพุตในแบบฟอร์มสอดคล้องกับชื่อตัวแปรพารามิเตอร์ของคอนโทรลเลอร์การเชื่อมโยงข้อมูลสามารถเสร็จสิ้นได้ หากไม่สอดคล้องกันคุณสามารถใช้คำอธิบายประกอบ @requestparam ควรสังเกตว่าหากชนิดข้อมูลพื้นฐานถูกกำหนดไว้ในพารามิเตอร์เมธอดคอนโทรลเลอร์ แต่ข้อมูลที่ส่งจากหน้านั้นเป็นโมฆะหรือ "" ข้อยกเว้นการแปลงข้อมูลจะเกิดขึ้น กล่าวคือมีความจำเป็นเพื่อให้แน่ใจว่าข้อมูลที่ส่งผ่านโดยแบบฟอร์มไม่สามารถเป็นโมฆะหรือ "" ดังนั้นในระหว่างกระบวนการพัฒนาจะเป็นการดีที่สุดที่จะกำหนดประเภทข้อมูลพารามิเตอร์เป็นประเภทบรรจุภัณฑ์สำหรับข้อมูลที่อาจว่างเปล่าดูตัวอย่างต่อไปนี้
2. ประเภทบรรจุภัณฑ์ (รับจำนวนเต็มเป็นตัวอย่างอื่น ๆ คล้ายกัน):
รหัสคอนโทรลเลอร์:
@RequestMapping ("SOESTTH.DO") การทดสอบโมฆะสาธารณะ (จำนวนจำนวนเต็ม) {}รหัสฟอร์ม:
<form action = "saysth.do" method = "post"> <input name = "count" value = "10" type = "text" />......<// ฟอร์ม>
โดยทั่วไปเหมือนกับชนิดข้อมูลพื้นฐาน ความแตกต่างคือข้อมูลที่ส่งผ่านโดยแบบฟอร์มอาจเป็นโมฆะหรือ "" รหัสข้างต้นเป็นตัวอย่าง หาก NUM ในรูปแบบคือ "" หรือไม่มีอินพุต NUM ในรูปแบบดังนั้นค่า NUM ในพารามิเตอร์วิธีคอนโทรลเลอร์จะเป็นโมฆะ
3. ประเภทวัตถุที่กำหนดเอง:
รหัสรุ่น:
ผู้ใช้ระดับสาธารณะ {สตริงส่วนตัวชื่อ FirstName; สตริงส่วนตัวนามสกุล; สตริงสาธารณะ getFirstName () {return firstName; } โมฆะสาธารณะ setFirstName (String firstName) {this.firstName = firstName; } สตริงสาธารณะ getLaStName () {return lastName; } โมฆะสาธารณะ setLastName (สตริงนามสกุล) {this.lastName = LastName; -รหัสคอนโทรลเลอร์:
@RequestMapping ("saysth.do") การทดสอบโมฆะสาธารณะ (ผู้ใช้ผู้ใช้) {}รหัสฟอร์ม:
<form action = "saysth.do" method = "post"> <input name = "firstName" value = "Zhang" type = "text"/> <input name = "LastName" value = "Three" type = "text" />………
มันง่ายมากเพียงแค่จับคู่ชื่อคุณสมบัติของวัตถุและค่าชื่อของอินพุตทีละคน
4. ปรับแต่งประเภทวัตถุผสม:
รหัสรุ่น:
คลาสสาธารณะ contactinfo {สตริงส่วนตัวโทร; ที่อยู่สตริงส่วนตัว สตริงสาธารณะ getTel () {return tel; } โมฆะสาธารณะ Settel (String tel) {this.tel = tel; } สตริงสาธารณะ getAddress () {return address; } โมฆะสาธารณะ setAddress (ที่อยู่สตริง) {this.address = ที่อยู่; }} ผู้ใช้คลาสสาธารณะ {Private String FirstName; สตริงส่วนตัวนามสกุล; contactinfo ส่วนตัว contactinfo; สตริงสาธารณะ getFirstName () {return firstName; } โมฆะสาธารณะ setFirstName (String firstName) {this.firstName = firstName; } สตริงสาธารณะ getLaStName () {return lastName; } โมฆะสาธารณะ setLastName (สตริงนามสกุล) {this.lastName = LastName; } Public ContactInfo getContactinfo () {return contactinfo; } โมฆะสาธารณะ setContactInfo (contactinfo contactinfo) {this.contactinfo = contactinfo; - รหัสคอนโทรลเลอร์:
@RequestMapping ("saysth.do") การทดสอบโมฆะสาธารณะ (ผู้ใช้ผู้ใช้) {system.out.println (user.getFirstName ()); System.out.println (user.getLastName ()); System.out.println (user.getContactInfo (). getTel ()); System.out.println (user.getContactInfo (). getAddress ());} รหัสฟอร์ม:
<form action = "saysth.do" method = "post"> <input name = "FirstName" value = "Zhang" /> <br> <name input = "LastName" value = "Three" /> <br> <name = "contactinfo.tel" value = "1380908909" /> /> <br> <input type = "subment" value = "save" /> </form>
มีแอตทริบิวต์ contactinfo ในวัตถุผู้ใช้ รหัสในคอนโทรลเลอร์นั้นสอดคล้องกับสิ่งที่กล่าวไว้ในจุด 3 อย่างไรก็ตามในรหัสฟอร์มคุณต้องใช้ "ชื่อแอตทริบิวต์ (แอตทริบิวต์ของประเภทวัตถุ) ชื่อ attribute" เพื่อตั้งชื่อชื่ออินพุต
5. รายการผูกพัน:
รายการจะต้องถูกผูกไว้กับวัตถุและไม่สามารถเขียนได้โดยตรงในพารามิเตอร์ของวิธีคอนโทรลเลอร์
รหัสรุ่น:
ผู้ใช้ระดับสาธารณะ {สตริงส่วนตัวชื่อ FirstName; สตริงส่วนตัวนามสกุล; สตริงสาธารณะ getFirstName () {return firstName; } โมฆะสาธารณะ setFirstName (String firstName) {this.firstName = firstName; } สตริงสาธารณะ getLaStName () {return lastName; } โมฆะสาธารณะ setLastName (สตริงนามสกุล) {this.lastName = LastName; }} คลาสสาธารณะ UserListForm {รายการส่วนตัว <ผู้ใช้> ผู้ใช้; รายการสาธารณะ <user> getUsers () {ผู้ใช้ส่งคืน; } public void setusers (รายการ <ผู้ใช้> ผู้ใช้) {this.users = ผู้ใช้; - รหัสคอนโทรลเลอร์:
@RequestMapping ("saysth.do") การทดสอบโมฆะสาธารณะ (userlistform userform) {สำหรับ (ผู้ใช้ผู้ใช้: userform.getUsers ()) {system.out.println (user.getFirstName () + " -" + user.getLastName ()); -รหัสฟอร์ม:
<form action = "saysth.do" method = "post"> <table> <thead> <tr> <th> ชื่อแรก </th> <th> นามสกุล </th> </tr> </thead> <tfoot> <tr> <td Colspan = "2"> name = "ผู้ใช้ [0] .firstName" value = "AAA"/> </td> <td> <ชื่ออินพุต = "ผู้ใช้ [0] .lastName" value = "bbb"/> </td> </tr> <tr> <td> name = "ผู้ใช้ [1] .lastName" value = "ddd"/> </td> </tr> <td> <td> <name input = "ผู้ใช้ [2] .firstName" value = "eee"/> </td> <td>
ในความเป็นจริงสิ่งนี้ค่อนข้างคล้ายกับการเชื่อมโยงของข้อมูล Contantinfo ในวัตถุผู้ใช้ในจุดที่ 4 แต่คุณสมบัติในวัตถุ UserListForm ที่นี่ถูกกำหนดเป็นรายการแทนที่จะเป็นวัตถุที่กำหนดเองทั่วไป ดังนั้นคุณต้องระบุตัวห้อยของรายการในแบบฟอร์ม เป็นมูลค่าการกล่าวขวัญว่าสปริงจะสร้างวัตถุรายการที่มีค่าตัวห้อยสูงสุดเป็นขนาด ดังนั้นหากมีการเพิ่มแบบไดนามิกและการลบแถวในรูปแบบควรให้ความสนใจเป็นพิเศษ ตัวอย่างเช่นหลังจากใช้ตารางค่าตัวห้อยจะไม่สอดคล้องกับขนาดจริงหลังจากผู้ใช้ลบแถวและเพิ่มแถวหลายครั้งในระหว่างการใช้งาน ในเวลานี้เฉพาะวัตถุในรายการเท่านั้นที่มีค่าในรูปแบบที่มีตัวห้อยมิฉะนั้นจะเป็นโมฆะ ดูตัวอย่าง:
รหัสฟอร์ม:
<form action = "saysth.do" method = "post"> <table> <thead> <tr> <th> ชื่อแรก </th> <th> นามสกุล </th> </tr> </thead> <tfoot> <tr> <td Colspan = "2"> name = "ผู้ใช้ [0] .firstName" value = "AAA"/> </td> <td> <ชื่ออินพุต = "ผู้ใช้ [0] .lastName" value = "bbb"/> </td> </tr> <tr> <td> name = "ผู้ใช้ [1] .lastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "ผู้ใช้ [20] .FirstName" value = "eee"/> </td> <td>
ในเวลานี้ userForm.getUsers () ในคอนโทรลเลอร์ได้รับขนาดของรายการเป็น 21 และไม่มีวัตถุผู้ใช้ 21 ชิ้นเหล่านี้เป็นโมฆะ แต่ชื่อแรกและนามสกุลในวัตถุผู้ใช้ตั้งแต่ 2 ถึง 19 เป็นโมฆะ ผลการพิมพ์:
aaa - bbbccc - dddnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull -nullnull -nullnull -nullnull nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullee - fff
6. ตั้งค่าการผูก:
ชุดคล้ายกับรายการและยังต้องผูกพันกับวัตถุและไม่สามารถเขียนได้โดยตรงในพารามิเตอร์ของวิธีการควบคุม อย่างไรก็ตามเมื่อมีการเชื่อมโยงข้อมูลชุดจำนวนวัตถุโมเดลที่สอดคล้องกันจะต้องเพิ่มก่อนในวัตถุที่ตั้งไว้
รหัสรุ่น:
ผู้ใช้ระดับสาธารณะ {สตริงส่วนตัวชื่อ FirstName; สตริงส่วนตัวนามสกุล; สตริงสาธารณะ getFirstName () {return firstName; } โมฆะสาธารณะ setFirstName (String firstName) {this.firstName = firstName; } สตริงสาธารณะ getLaStName () {return lastName; } โมฆะสาธารณะ setLastName (สตริงนามสกุล) {this.lastName = LastName; }} คลาสสาธารณะ UsersEtform {Private Set <ผู้ใช้> ผู้ใช้ = new HashSet <user> (); Public UsersetForm () {users.add (ผู้ใช้ใหม่ ()); users.add (ผู้ใช้ใหม่ ()); users.add (ผู้ใช้ใหม่ ()); } ชุดสาธารณะ <user> getUsers () {return users; } public void setusers (ตั้งค่า <ผู้ใช้> ผู้ใช้) {this.users = ผู้ใช้; -รหัสคอนโทรลเลอร์:
@RequestMapping ("saysth.do") การทดสอบโมฆะสาธารณะ (UsersetForm userform) {สำหรับ (ผู้ใช้ผู้ใช้: userForm.getUsers ()) {system.out.println (user.getFirstName () + " -" + user.getLastName ()); -รหัสฟอร์ม:
<form action = "saysth.do" method = "post"> <table> <thead> <tr> <th> ชื่อแรก </th> <th> นามสกุล </th> </tr> </thead> <tfoot> <tr> <td Colspan = "2"> name = "ผู้ใช้ [0] .firstName" value = "AAA"/> </td> <td> <ชื่ออินพุต = "ผู้ใช้ [0] .lastName" value = "bbb"/> </td> </tr> <tr> <td> name = "ผู้ใช้ [1] .lastName" value = "ddd"/> </td> </tr> <td> <td> <name input = "ผู้ใช้ [2] .firstName" value = "eee"/> </td> <td>
โดยทั่วไปคล้ายกับรายการที่มีผลผูกพัน
ควรสังเกตว่าหากค่าตัวห้อยสูงสุดสูงกว่าขนาดของชุดจะมีการโยน org.springframework.beans.invalidpropertyException ดังนั้นจึงไม่สะดวกเล็กน้อยเมื่อใช้งาน
7. การเชื่อมโยงแผนที่:
แผนที่มีความยืดหยุ่นมากที่สุด นอกจากนี้ยังต้องผูกพันกับวัตถุและไม่สามารถเขียนได้โดยตรงในพารามิเตอร์ของวิธีการควบคุม
รหัสรุ่น:
ผู้ใช้ระดับสาธารณะ {สตริงส่วนตัวชื่อ FirstName; สตริงส่วนตัวนามสกุล; สตริงสาธารณะ getFirstName () {return firstName; } โมฆะสาธารณะ setFirstName (String firstName) {this.firstName = firstName; } สตริงสาธารณะ getLaStName () {return lastName; } โมฆะสาธารณะ setLastName (สตริงนามสกุล) {this.lastName = LastName; }} คลาสสาธารณะ USERMAPFORM {แผนที่ส่วนตัว <สตริงผู้ใช้> ผู้ใช้; แผนที่สาธารณะ <สตริงผู้ใช้> getUsers () {ผู้ใช้ส่งคืน; } public void setusers (แผนที่ <สตริงผู้ใช้> ผู้ใช้) {this.users = ผู้ใช้; - รหัสคอนโทรลเลอร์:
@RequestMapping ("saysth.do") การทดสอบโมฆะสาธารณะ (usermapform userform) {สำหรับ (map.entry <string, ผู้ใช้> รายการ: userform.getUsers (). entrySet ()) {system.out.println (entry.getKey () + ":" - รหัสฟอร์ม:
<form action = "saysth.do" method = "post"> <table> <thead> <tr> <th> ชื่อแรก </th> <th> นามสกุล </th> </tr> </thead> <tfoot> <tr> <td Colspan = "2"> name = "ผู้ใช้ ['x']. firstName" value = "AAA"/> </td> <td> <ชื่ออินพุต = "ผู้ใช้ ['x']. นามสกุล" value = "bbb"/> </td> </tr> <td> <td> name = "ผู้ใช้ ['y']. lastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "ผู้ใช้ ['z']. firstName" value = "eee"/> </td> <td> /> </td> </tr> </tbody> </table> </form>
ผลการพิมพ์:
X: AAA - BBBY: CCC - DDDZ: EEE - FFF
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น