مبدأ إضافة جزء المنتج هو نفسه إضافة فئة المنتج. ارجع إلى المقالة: إضافة وتحديث فئة المنتج ، ولكنها أكثر تعقيدًا من فئة المنتج. نظرًا لوجود العديد من سمات المنتج ، هناك المزيد من الحقول في قاعدة البيانات المقابلة. هناك أيضًا خيار لإضافة منتج لتحميل الصور. سيتم شرح هذا المحتوى الصغير بشكل منفصل في المقالة التالية ، لأن هذا يتضمن نقطة معرفة ، وهي أن Struts2 تنفذ وظيفة تحميل الملف. لن أقول أكثر من ذلك بكثير. الآن سأبدأ في تحسين الكود لإضافة جزء المنتج:
1. إضافة المنتجات
1.1 إضافة تطبيق واجهة المستخدم للمنتجات <br /> أكمل الرمز أولاً لإضافة جزء المنتج في Query.jsp:
بعد ذلك ، دعونا نلقي نظرة على التنفيذ المحدد في Save.jsp:
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <! doctype html public "-// w3c // dtd html 4.01> styled//en" الهامش: 10px ؛ } </style> <script type = "text/javaScript"> $ (function () {// custom reviewty method تسجل الوظيفة الجديدة $ .extend ($. رسالة)} التنسيق: {// تنفيذ الوظيفة ، إذا كان يتم إرجاعه ، فإن التحقق من التحقق: الدالة (القيمة ، param) <arr.lender ؛ البيانات في تنسيق json وأرسلها إلى url: 'category_query.action' ، valuefield: 'id' ، textfield: 'type' ، // تعرض القائمة المنسدلة جميع فئات المنتجات اللوحة: 'Auto' ، // exaptive height panelwidth: 120 ، // القائمة المنسدلة هي عرض: 120 مكونًا من مكونات ، // تحرير // combobox ورث التحرير والسرد وراثة ValativeBox ، بحيث يمكنك تعيين التحقق مباشرة هنا المطلوب: صحيح ، مفقود: "الرجاء تحديد الفئة"}) ؛ $ ("input [name = name]"). ValatedBox ({مطلوب: صواب ، مفقود: "الرجاء إدخال اسم المنتج '}) ؛ $ ("input [name = price]"). numberbox ({مطلوب: صواب ، مفقود: "الرجاء إدخال سعر المنتج" ، دقيقة: 0 ، الدقة: 2 ، // الاحتفاظ ببادتي عشرية: '$'}) ؛ $ ("input [name = 'fileimage.upload']"). $ ("TextArea [name = emplay]"). ValatedBox ({مطلوب: صواب ، مفقود: "الرجاء إدخال وصف بسيط للمنتج"}) ؛ $ ("TextArea [name = xRemark]"). ValatedBox ({مطلوب: صواب ، مفقود: "الرجاء إدخال وصف بسيط للمنتج"}) ؛ $ ("TextArea [name = xRemark]"). ValatedBox ({مطلوب: صواب ، مفقود: "الرجاء إدخال وصف بسيط للمنتج"}) ؛ // تعطيل التحقق $ ("#ff"). الشكل ("DisableValidation") ؛ . النجاح:) {// إذا كانت النافذة الحالية. // events $ ("#reset"). انقر فوق (function () {$ ("#ff"). form ("disableValidation") ؛ // لا تتطلب إعادة التعيين التحقق من النموذج // إعادة تعيين بيانات النموذج الحالية $ ("#ff"). form ("reset") ؛}) ؛ }) ؛ </script> </head> <body> <form id = "ff" method = "post" enctype = "multipart/form-data"> <viv> <blabe> اسم المنتج: </label> <input type = "text" type = "file" name = "fileimage.upload"/> </viv> <viv> <blabe> الفئة: </label> <input id = "cc" name = "category.id"/> </viv> <viv> <blabel> أضف إلى التوصية: </label> الموصى بها: </label> type = "radio" name = "Confer" value = "false"/> </div> <viv> <blabel> هل هو صالح: </label> المدرجة: <input type = "radio" name = "open" checked = "checked" value = "true"/> readed: <input type = "radio" name = "open" value = "false"/> cols = "40" rows = "4"> </textarea> </viv> <viv> <blable> الوصف التفصيلي: </label> <textarea name = "xremark" cols = "40" rows = "8" </viv> </form> </body> </html>دعونا نلقي نظرة بشكل أساسي على جزء الطريقة المخصصة في رمز JS أعلاه ، والذي يحدد بشكل أساسي التحقق من الصور التي تم تحميلها. التحليل المحدد هو كما يلي:
ثم يمكنك استخدام طريقة مخصصة في قسم التحقق من الصورة:
1.2 تنفيذ الخلفية لإضافة منتجات
Controller ("ProductAction") scope ("prototype") يمتد Ormult Class Production BaseAction <Corder> {// إغفال الرموز الأخرى ... void public save () rems {// معالجة الصور التي تم تحميلها ، تحلل المدونة التالية على وجه التحديد تحميل STRUTS2 نموذج ملف. // قم بتعيين الوقت الحالي ، لأن مكتب الاستقبال لا يمر بحقل الوقت فيه ، قم بتعيينه بنفسك هنا. System.out.println (نموذج) ؛ // معلومات تخزين المعلومات Productervice.save (نموذج) ؛ }} 2. قم بتحديث المنتج
2.1 تحديث تطبيق واجهة المستخدم للمنتج
أولاً ، انظر إلى رمز جزء المنتج المحدث في Query.jsp:
بعد ذلك ، دعونا نلقي نظرة على محتوى update.jsp:
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <! doctype html public "-// w3c // dtd html 4.01> styled//en" الهامش: 5px ؛ } </style> <script type = "text/javaScript"> $ (function () {// dataGrid object var dg = parent. $ ("iframe [title = 'product"). احصل على (0). تحتاج إلى إرجاع البيانات المعالجة إلى هذا الجانب لعرضها ، لذلك تحتاج الخلفية إلى حزم البيانات بتنسيق JSON وإرسالها إلى عنوان URL: "Category_Query.action" ، Valuefield: "ID" ، Textfield: "type" ، // قائمة المنسدلة الخاصة بنا ، تُظهر القائمة المنسدلة ، / /قائمة من القائمة المدمجة: قم بتعيين عرضين في نفس الوقت: FALSE ، // المربع المنسدلة لا يسمح بالتحرير // Combobox ويرث Combo BiadityBox ، بحيث يمكنك تعيين التحقق مباشرة: صحيح ، مفقود: "يرجى تحديد الفئة"}) ؛ dg.datagrid ("getSelections") ؛ // قم بتحميل حقل البيانات المقابل للصف الذي تدخله في النموذج إلى Echo $ ("#ff"). النموذج ('load' ، {id: rows [0] افتح: الصفوف [0] .Open ، 'category.id': الصفوف [0] .category.id // easyui لا يدعم عملية الحساب. // بعد صدى البيانات ، قم بتعيين وظيفة التحقق $ ("input [name = name]"). $ ("input [name = price]"). numberbox ({مطلوب: صواب ، مفقود: "الرجاء إدخال سعر المنتج" ، دقيقة: 0 ، الدقة: 2 ، // الاحتفاظ ببادتي عشرية: '$'}) ؛ $ ("input [name = 'fileimage.upload']"). $ ("TextArea [name = emplay]"). ValatedBox ({مطلوب: صواب ، مفقود: "الرجاء إدخال وصف بسيط للمنتج"}) ؛ $ ("TextArea [name = xRemark]"). ValatedBox ({مطلوب: صواب ، مفقود: "الرجاء إدخال وصف بسيط للمنتج"}) ؛ $ ("TextArea [name = xRemark]"). ValatedBox ({مطلوب: صواب ، مفقود: "الرجاء إدخال وصف بسيط للمنتج"}) ؛ // تعطيل التحقق $ ("#ff"). الشكل ("DisableValidation") ؛ . "Product_update.action" ، // عند تقديم الطلب إلى طريقة التحديث ، ينفذ النجاح: الدالة () }) ؛ </script> </head> <body> <form id = "ff" method = "post" enctype = "multipart/form-data"> <viv> <label for = "name"> اسم المنتج: </label> <type type = "text" name = "name"/> </viv> <div> <label> تحديث الصورة: </label> <input type = "file" name = "fileimage.upload"/> </viv> <div> <label for = "account"> فئة المنتج: </label> <!-بيانات تحميل عن بعد ". cols = "40" rows = "4"> </textarea> </viv> <viv> <label for = "xremark"> الوصف التفصيلي: </label> <textarea name = "xremark" cols = "40" rows = "8" value = "true" /> no: <input type = "radio" name = "confer" value = "false" /> </fire> <div> <siled for = "open"> products stiveal: < /label> المدرجة: <input type = "radio" name = "open" value = "true" /> تمت إزالته: <input type = "open" اختيارات البيانات = "iconcls:" icon-edit '"> update </a> <input type =" hidden "name =" id "/> </viv>` </form> </body> </html> جزء التحديث هو في الأساس نفس تحديث فئة المنتج. لن أكررها مرة أخرى. فيما يلي تنفيذ جزء تحديث الخلفية:
2.2 تنفيذ خلفية المنتج المحدث
Controller ("ProductAction") scope ("prototype") يمتد Ormult Class Production BaseAction <Corder> {// إغفال الرموز الأخرى ... تحديث الفراغ العام () يلقي استثناء {// معالجة الصور التي تم تحميلها ، والمدونة التالية تحلل على وجه التحديد تحميل sTrutS2 نموذج file.setDate (تاريخ جديد) ؛ // قم بتعيين الوقت الحالي ، لأن مكتب الاستقبال لا يمر بحقل الوقت فيه ، قم بتعيينه بنفسك هنا. System.out.println (نموذج) ؛ // تحديث Product Productervice.update (نموذج) ؛ }} بالمقارنة مع تحديث فئات المنتجات ، لا يوجد سوى عملية تحميل صورة واحدة فقط. نحن بحاجة إلى معالجة الصور التي تم تحميلها في الخلفية. سنقوم بتحليل وظيفة تحميل الملف لـ Struts2 بالتفصيل في المقالة التالية.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.