سؤال

في Struts2 ، استفدت من ognl المدمج في Struts2 ، وتسمية مدخلاتي مثل <input name='bag["item"].property'>الذي ذهب إلى getters/setters getBag().get("item").setProperty(value)لقد قمت بالترقية إلى Struts 2.2.1 ، وبشكل لم تعد تعمل هؤلاء: لم يتم استدعاء Getter أبدًا.

الإنترنت صامت تمامًا على استخدام ognl في المعلمات, ، كما لو لم يصنع أحد أشكالًا معقدة.

كيف يمكنني استعادة خريطة المعلمات الخاصة بي؟

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

المحلول

اتضح أنهم قاموا بتصلب القيود على أسماء المعلمات لتعزيز الأمان.

لذلك اضطررت إلى إضافة إلى struts.xml:

       <interceptor-stack name="defaultStack">
          <interceptor-ref name="params">
             <!-- For maps to work -->
             <param name="acceptParamNames">
                 [a-zA-Z0-9\.\]\[\(\)_'\s"/]+
             </param>
          </interceptor-ref>
       </interceptor-stack>

(كان لدي "S و /S في أسماء المعلمات الخاصة بي) توقف تحميل الملف عن العمل بعد ذلك (مكدسات التقاطع هي الجنون) ، لذلك اضطررت إلى إضافته أيضًا.

تحديث: في هذه الأيام أقترح بشدة استخدام JSON لتمرير الهياكل المعقدة بدلاً من أشكال ognl الغنية. بالطبع ستحتاج إلى بعض JS.

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