أحصل على nullpointerxception عند الوصول إلى قيود ثابتة

StackOverflow https://stackoverflow.com/questions/214914

  •  03-07-2019
  •  | 
  •  

سؤال

الرمز

${personRequest.constraints.requestStatus.inList}

في ملف GSP الخاص بي يلقي NullPointerException, ، لكن new PersonRequest().constraints.. يعمل. لماذا ا؟ ليس constraints ثابتة؟

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

المحلول

نسخ من هنا (قائمة بريدية مستخدم Grails)

ولكن لماذا لا تعمل الحقول الثابتة؟

لأن الحقل الثابت "القيود" هو خاصية إغلاق. ليس لديها عوامل فرعية تتعلق بالقيود.

تقوم Grails بتقييم هذا الإغلاق باستخدام منشئ القيود الذي يراقب "يدعو" إلى طرق غير موجودة ، أي أسماء الممتلكات التي تستخدمها:

type( inList: [xxxxx])

... يتسبب في استدعاء الطريقة إلى "الكتابة" مع معلمة MAP تحتوي على "inlist" ==> بعض القيمة.

من هذه المعلومات ، تبني Grails قائمة بجميع القيود
متاح وربطهم بالمثيلات المستقبلية لفئة المجال.

لذا ، عند الوصول إلى user.constraints بشكل ثابت ، فإنك تحصل على ملف
إنهاء.

يمكننا أن ننظر إلى استبدال قيمة خاصية القيود الثابتة في وقت التشغيل بعد تقييم الإغلاق الذي تتم تهيئته به. ومع ذلك يمكن أن يكون هذا السحر "أكثر من اللازم". ماذا يفكر الناس؟

لمعلوماتك ، يبدو الأمر كذلك الآن لأنه حتى 0.4 (إذا كنت أتذكر) ، لم تكن قيودها ثابتة ، وفي 0.4 لا يزال من الممكن أن تكون غير قاسية. فقط في 0.5
هل سنرمي استثناء/تجاهل القيود غير المنتظمة.

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