هل من الممكن الحصول على واجهة المستخدم: قيمة الحقل في كود Java في GWT؟

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

  •  27-09-2019
  •  | 
  •  

سؤال

قد يبدو هذا غريبًا جدًا ، لكن لنبدأ بمثال:

<my:MagicWidget ui:field="someFieldName" fieldName="someFieldName"/>

من المستحسن إلى حد كبير أننا سنريد دائمًا الحصول على نفس القيمة في واجهة المستخدم: الحقل وفي FieldName. من الواضح أن هناك بعض التكرار في هذا الرمز ، أود تجنب ذلك وجعل اسم FieldName اختياريًا.

لذلك ، هذا ما لدي في رمز القطعة:

@UiConstructor
public MagicWidget(String fieldName) {
    this.fieldName = fieldName;
}

لكنني أرغب ، إذا كان ذلك ممكنًا ، إذا أمكن أن يكون هذا المُنشئ اختياريًا ، وأن يوفر مُنشئًا افتراضيًا من شأنه أن يكتشف "سحر" أن يكون واجهة المستخدم: قيمة الحقل:

@UiConstructor
public MagicWidget() {
    this.fieldName = /*some magic to get ui:field's value*/;
}

كنت أتساءل عما إذا كانت هناك طريقة للحصول على قيمة "واجهة المستخدم: الحقل" داخل MagickWidget؟ (يمتد القطعة المركب). أخشى أن هذا قد لا يكون ممكنًا ، لأنه في معظم الوقت ليس مفيدًا للغاية ، ولكن إذا كان لدى أي شخص فكرة - فلا تتردد في المشاركة!

ملاحظة: أنا أستخدم GWT 2.1.0.rc1.

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

المحلول

كما تعلمون ، فإن واجهة المستخدم: الحقل موجود حتى تتمكن من التفاعل مع كائن واجهة المستخدم في كود Java بعد إعلانه مع UiBinder. لذلك ، على سبيل المثال ، إذا قمت بإضافة magicwidget في قالب uibinder ، يمكنك الكتابة

@UiField MagicWidget someWidget

من أجل أن تكون قادرًا على التفاعل معه برمجيًا. قد لا يكون وجود أداة سحرية الخاصة بك اسم المرجع الذي يشير إليها مفيدًا (أو ممكنًا) ، حيث يمكنك تمرير الإشارة إلى هذا MagicWidget المحدد بين أجزاء مختلفة من التطبيق. يمكن أن يكون لدى MagicWidget واحد بسهولة العديد من المراجع بأسماء مختلفة تشير إليها في وقت واحد. لهذا السبب يصعب اختياره "بواسطة Magic" في وقت التشغيل. أدرك أن هذه ليست مشكلة كبيرة إذا كنت تريد فقط هذه القيمة عند إنشاء الكائن ، ولكن ضع في اعتبارك أنك لست مطالبة بتضمين واجهة مستخدم: حقل عند إضافة عنصر واجهة مستخدم باستخدام UiBinder.

لماذا من المهم أن تعرف القطعة اسم حقلها؟ مع العلم أن ذلك قد يسهل تقديم اقتراحات حول طرق أخرى لإنجاز ما تبحث عنه.

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