سؤال

لدي نموذج يحتوي (في الوقت الحالي) على حقلين وأرسل ما يلي:

capture.id = 213
capture.description = DescriptionText

الكائن الهدف "التقاط" غير قابل للتغيير وأود توفير محول نوع لأخذ كلتا القيمتين واستدعاء المنشئ.يبدو أن ما لا أستطيع فعله هو استدعاء TypeConverter.

إذا كان الإدخال ببساطة:

capture = foo

ثم يتم استدعاء محول النوع، ولكن من الواضح أن هذا ليس له فائدة كبيرة، هل هناك طريقة لتعيين ognl لتفويض بقية المحادثة النصية لي، وربما تمرير خريطة المعلمات؟

أيه أفكار؟هل هذا ممكن حتى في الدعامات2

الإصدارات:الدعامات 2.0.14 وognl 2.6.11

يحرر:لقد قرأت القليل عن هذا وبدا لي أن محاولتي التالية كانت خطة جيدة.كانت نظريتي هي أن استخدام بناء جملة الخريطة من شأنه أن يجعل Ognl يحول القيم إلى خريطة ثم يستدعي المحول الخاص بي باستخدام تلك الخريطة لتحويله إلى القيمة الخاصة بي.

capture[id] = 213
capture[description] = DescriptionText

كلا، لا يبدو أن هذا يحدث أي فرق على الإطلاق.

هل كانت مفيدة؟

المحلول 2

يبدو أن الجواب هو لا لا يمكنك فعل ذلك باستخدام الدعامات2.

لقد قمت بنشر هذا السؤال على القائمة البريدية struts2 ويبدو أنه ليس من الممكن تقديم حقول متعددة إلى TypeConverter.

الحل البديل المقترح هو أن يكون لديك كائن قابل للتغيير مع أدوات ضبط ثم يكون لديك شكل من أشكال طريقة "petify" لمنع أي تغييرات مستقبلية.

بالنسبة لمشروعي، قمت بالفعل بتطبيق معترض دعامات آخر لتنفيذ سلوك ربط المعلمة المخصص الخاص بي.

نصائح أخرى

وكانت الطريقة التي فعلت هذا ليلي في JSP:

<s:textfield name="capture" value="capture.id" />
<s:textfield name="capture" value="capture.description" />

في تحويل نوع، وسلسلة [] قيم المعلمات من طريقة convertFromString سيحتوي كلا القيم اللازمة لبناء أسر غير قابل للتغيير الجديد. شريطة أن تكون متسقة مع ترتيب حقل النص (أو أفضل من ذلك، تغلف في ملف علامة)، يمكنك استخدام المؤشرات لمجموعة القيم موثوق حصول على الحقل المناسب من وجوه القبض عليه.

والجزء غريب واحد عن هذا النهج هو أن طريقة convertToString لا حقا تفعل أي شيء من أجلك. يمكنك العودة إما معرف أو وصف (أو سلسلة لهم معا)، ولكن منذ كنت تستخدم السمة القيم في JSP، لا يهم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top