سؤال

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

Included.xhtml

<ui:component>
  <h:inputText id="contained_field"/>
  <h:commandButton actionListener="#{backingBean.update}" value="Submit"/>
</ui:component>

example_containing.xhtml

<h:form id="containing_form">
  <ui:include src="/included.xhtml"/>
</h:form>

كيف يمكنني تحديد معرف النموذج الموجود في ملف update طريقة في وقت التشغيل؟أو الأفضل من ذلك، معرف حقل الإدخال مباشرة.

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

المحلول

قم بربط الزر بفاصوليا الدعم الخاصة بك، ثم استخدم getParent() حتى تجد أقرب نموذج.

نصائح أخرى

برمجياً سأستخدم طريقة jsight.يمكنك معرفة معرف العناصر الخاصة بك (ما لم تسمح لـ JSF بإنشائها، لا أعرف وسيلة الترقيم في المعرفات) من خلال النظر إليها.h:form عبارة عن حاوية تسمية، لذا طالما لم تكن ملفوفة في حاوية تسمية أخرى، فسوف تحتوي علىForm:containedfield إن ':' هو فاصل التسمية بشكل افتراضي هو JSF ويتم إنشاء المعرفات بهذه الطريقة، تقريبًا على أي حال ، (parentNamingContainerId :)*componentId

نظرًا لأن طريقة التحديث من النوع actionListener، فيمكنك الوصول إلى مكون واجهة المستخدم الخاص بك على النحو التالي

public void update(javax.faces.event.ActionEvent ac) {
      javax.faces.component.UIComponent myCommand = ac.getComponent( );
      String id = myCommand.getId(); // get the id of the firing component

      ..... your code .........

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