طرق ربط المعلمة المختلفة من springMVC
1.
رمز وحدة التحكم:
requestmapping ("saytth.do") اختبار الفراغ العام (عدد int) {}رمز النموذج:
<form action = "siesth.do" method = "post"> <input name = "count" value = "10" type = "text" />......</ form>
إذا كانت قيمة اسم الإدخال في النموذج متسقة مع اسم متغير المعلمة لوحدة التحكم ، فيمكن إكمال ربط البيانات. إذا كان ذلك غير متسق ، فيمكنك استخدام شرح @REQUESTPARAM. تجدر الإشارة إلى أنه إذا تم تعريف نوع البيانات الأساسية في معلمة طريقة وحدة التحكم ، ولكن البيانات المقدمة من الصفحة فارغة أو "" ، ستحدث استثناءات تحويل البيانات. بمعنى أنه من الضروري التأكد من أن البيانات التي يتم تمريرها بواسطة النموذج لا يمكن أن تكون فارغة أو "" ، لذلك ، أثناء عملية التطوير ، من الأفضل تحديد نوع بيانات المعلمة كنوع تغليف للبيانات التي قد تكون فارغة ، انظر المثال التالي.
2. نوع التغليف (مع أخذ عدد صحيح على سبيل المثال ، والبعض الآخر متشابه):
رمز وحدة التحكم:
requestmapping ("saytth.do") اختبار الفراغ العام (عدد صحيح) {}رمز النموذج:
<form action = "siesth.do" method = "post"> <input name = "count" value = "10" type = "text" />......</ form>
إنه في الأساس نفس نوع البيانات الأساسية. الفرق هو أن البيانات التي يتم تمريرها بواسطة النموذج يمكن أن تكون فارغة أو "". الرمز أعلاه هو مثال. إذا كان NUM في النموذج هو "" أو لا يوجد إدخال NUM في النموذج ، فإن قيمة NUM في معلمة طريقة وحدة التحكم خالية.
3. نوع الكائن المخصص:
رمز النموذج:
مستخدم الفئة العامة {private string firstName ؛ سلسلة خاصة السلسلة العامة getFirstName () {return firstName ؛ } public void setFirstName (String firstName) {this.firstName = firstName ؛ } السلسلة العامة getLastName () {return lastName ؛ } public void setLastName (String lastName) {this.lastname = lastName ؛ }}رمز وحدة التحكم:
requestmapping ("siesth.do") اختبار الفراغ العام (مستخدم المستخدم) {}رمز النموذج:
<form action = "siesth.do" method = "post"> <input name = "firstName" value = "zhang" type = "text"/> <input name = "lastName" value = "three" type = "text" />........
الأمر بسيط للغاية ، ما عليك سوى تطابق اسم خاصية الكائن وقيمة اسم الإدخال واحدًا تلو الآخر.
4. تخصيص نوع كائن المركب:
رمز النموذج:
الفئة العامة ContactInfo {Private String Tel ؛ عنوان السلسلة الخاص ؛ السلسلة العامة getTel () {return tel ؛ } public void settel (String tel) {this.tel = tel ؛ } السلسلة العامة getAddress () {return address ؛ } public void setAddress (عنوان السلسلة) {this.address = العنوان ؛ }} مستخدم الفئة العامة {private string firstName ؛ سلسلة خاصة ContactInfo ContactInfo ؛ السلسلة العامة getFirstName () {return firstName ؛ } public void setFirstName (String firstName) {this.firstName = firstName ؛ } السلسلة العامة getLastName () {return lastName ؛ } public void setLastName (String lastName) {this.lastname = lastName ؛ } contactInfo getContactInfo () {return contactInfo ؛ } public void setContactInfo (contactInfo contactInfo) {this.contactinfo = contactInfo ؛ }} رمز وحدة التحكم:
@requestmapping ("siesth.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 = "siesth.do" method = "post"> <input name = "firstName" value = "Zhang" /> <br> <input name = "lastName" value = "three" /> <br> <input name = "contactInfo.tel" value = "13809908909" /> <br> /> <br> <إدخال type = "إرسال" value = "Save" /> < /form>
هناك سمة ContactInfo في كائن المستخدم. يتوافق الرمز الموجود في وحدة التحكم مع ما يقال في النقطة 3. ومع ذلك ، في رمز النموذج ، تحتاج إلى استخدام "اسم السمة (سمة نوع الكائن). اسم" اسم "لتسمية اسم الإدخال.
5. قائمة الربط:
يجب أن تكون القائمة ملزمة للكائن ، ولا يمكن كتابتها مباشرة في معلمات طريقة وحدة التحكم.
رمز النموذج:
مستخدم الفئة العامة {private string firstName ؛ سلسلة خاصة السلسلة العامة getFirstName () {return firstName ؛ } public void setFirstName (String firstName) {this.firstName = firstName ؛ } السلسلة العامة getLastName () {return lastName ؛ } public void setLastName (String lastName) {this.lastname = lastName ؛ }} الفئة العامة userListForm {قائمة خاصة <Sether> المستخدمين ؛ القائمة العامة <Sether> getUsers () {return users ؛ } setUsers public void (قائمة <Sether> المستخدمين) {this.users = usered ؛ }} رمز وحدة التحكم:
requestMapping ("siesth.do") اختبار void العام (userListForm userform) {for (user user: userform.getusers ()) {system.out.println (user.getFirstName () + " -" + user.getLastName ()) ؛ }}رمز النموذج:
<form action = "siesth.do" method = "post"> <table> <thead> <tr> <th> الاسم الأول </th> <th> الاسم الأخير </th> </tr> </thead> <tfoot> <tr> <td colspan> name = "users [0] .firstName" value = "aaa"/> </td> <td> <input name = "users [0] .lastname" value = "bbb"/> </td> </td> <td> <td> name = "users [1] .lastname" value = "ddd"/> </td> </td> <td> <td> <td>
في الواقع ، يشبه هذا إلى حد ما ربط بيانات conantinfo في كائن المستخدم في النقطة الرابعة ، ولكن يتم تعريف الخصائص في كائن قائمة المستخدمين هنا على أنها قائمة ، بدلاً من الكائنات المخصصة العادية. لذلك ، تحتاج إلى تحديد مجموعة القائمة في النموذج. تجدر الإشارة إلى أن الربيع سيقوم بإنشاء كائن قائمة ذي قيمة تراكمية الحد الأقصى كحجم. لذلك ، إذا كان هناك إضافة ديناميكية وحذف الصفوف في النموذج ، فيجب إيلاء اهتمام خاص. على سبيل المثال ، بعد استخدام الجدول ، ستكون قيمة التراجع غير متسقة مع الحجم الفعلي بعد حذف المستخدم الصفوف ويضيف صفوفًا عدة مرات أثناء الاستخدام. في هذا الوقت ، سيكون فقط الكائنات الموجودة في القائمة قيمًا في النموذج تحتوي على مشتركين ، وإلا فسيكون ذلك فارغًا. انظر مثال:
رمز النموذج:
<form action = "siesth.do" method = "post"> <table> <thead> <tr> <th> الاسم الأول </th> <th> الاسم الأخير </th> </tr> </thead> <tfoot> <tr> <td colspan> name = "users [0] .firstName" value = "aaa"/> </td> <td> <input name = "users [0] .lastname" value = "bbb"/> </td> </td> <td> <td> name = "users [1] .lastname" value = "ddd"/> </td> </td> <td> <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 - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullee - fff
6. تعيين الربط:
المجموعة مشابهة للقائمة ، كما يجب أن تكون ملزمة بالكائن ، ولا يمكن كتابتها مباشرة في معلمات طريقة وحدة التحكم. ومع ذلك ، عند تحديد بيانات مجموعة الربط ، يجب إضافة العدد المقابل لكائنات النموذج أولاً في كائن SET.
رمز النموذج:
مستخدم الفئة العامة {private string firstName ؛ سلسلة خاصة السلسلة العامة getFirstName () {return firstName ؛ } public void setFirstName (String firstName) {this.firstName = firstName ؛ } السلسلة العامة getLastName () {return lastName ؛ } public void setLastName (String lastName) {this.lastname = lastName ؛ }} الفئة العامة ustervesterform {private set <Sether> users = new Hashset <Serve> () ؛ userSetTform () {user.add (new user ()) ؛ users.add (user ()) ؛ users.add (user ()) ؛ } مجموعة عامة <Ser> getUsers () {return users ؛ } public void setUsers (set <Sether> users) {this.users = users ؛ }}رمز وحدة التحكم:
requestMapping ("siesth.do") اختبار void العام (userSetform userform) {for (user user: userform.getusers ()) {system.out.println (user.getFirstName () + " -" + user.getLastName ()) ؛ }}رمز النموذج:
<form action = "siesth.do" method = "post"> <table> <thead> <tr> <th> الاسم الأول </th> <th> الاسم الأخير </th> </tr> </thead> <tfoot> <tr> <td colspan> name = "users [0] .firstName" value = "aaa"/> </td> <td> <input name = "users [0] .lastname" value = "bbb"/> </td> </td> <td> <td> name = "users [1] .lastname" value = "ddd"/> </td> </td> <td> <td> <td>
تشبه أساسا الربط القائمة.
تجدر الإشارة إلى أنه إذا كانت القيمة القصوى القصوى أكبر من حجم المجموعة ، فسيتم طرح org.springframework.beans.invalidPropertyException. لذلك ، فهو غير مريح بعض الشيء عند استخدامه.
7. خريطة الربط:
الخريطة هي الأكثر مرونة. يجب أن تكون ملزمة للكائن ولا يمكن كتابتها مباشرة في معلمات طريقة وحدة التحكم.
رمز النموذج:
مستخدم الفئة العامة {private string firstName ؛ سلسلة خاصة السلسلة العامة getFirstName () {return firstName ؛ } public void setFirstName (String firstName) {this.firstName = firstName ؛ } السلسلة العامة getLastName () {return lastName ؛ } public void setLastName (String lastName) {this.lastname = lastName ؛ }} الفئة العامة usermapform {private map <string ، user> user ؛ الخريطة العامة <string ، user> getUsers () {return users ؛ } setUsers public void (Map <String ، User> user) {this.users = usered ؛ }} رمز وحدة التحكم:
requestmapping ("siesth.do") اختبار الفراغ العام (usermapform userform) {for (map.entry <string ، user> intern: userform.getusers (). }} رمز النموذج:
<form action = "siesth.do" method = "post"> <table> <thead> <tr> <th> الاسم الأول </th> <th> الاسم الأخير </th> </tr> </thead> <tfoot> <tr> <td colspan> name = "users ['x']. firstName" value = "aaa"/> </td> <td> <input name = "users ['x'] name = "users ['y']. lastName" value = "ddd"/> </td> </td> <td> <td> <td name = "users ['z']. /> </td> </tr> </tbody> </table> </pong>
نتيجة الطباعة:
X: AAA - BBBY: CCC - DDDZ: EEE - FFF
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.