إعادة الإعادة المطلقة باستخدام Richfaces
سؤال
مشكلتي هي أن ريتشفس reRender
لا يعمل "تحت" العنصر الحالي في شجرة العناصر ؛ فقط العناصر العليا تحصل على إعادة صياغة.
هل هناك أي طريقة للوصول إلى العناصر السفلية مع Ajax؟
سيكون موضع تقدير أي مساعدة! دانيال
تعديل لقد قمت بتحرير هذا السؤال إلى سؤال أكثر عمومية. انظر المراجعات إذا كنت مهتمًا بالسؤال الأصلي.
المحلول 2
هنا مثال حيث changePanel111()
يغير محتوى عنصر أقل:
<h:form id="form" prependId="true">
<rich:panel id="PANEL1">
<h:outputText id="PANEL1TEXT" value="#{ajaxTestBean.panel1}"/>
<rich:panel id="PANEL11">
<h:outputText id="PANEL11TEXT" value="#{ajaxTestBean.panel11}"/>
<rich:panel id="PANEL111">
<h:outputText id="PANEL111TEXT" value="#{ajaxTestBean.panel111}"/>
</rich:panel>
</rich:panel>
<rich:panel id="PANEL12">
<h:outputText id="PANEL12TEXT" value="#{ajaxTestBean.panel12}"/>
<br/>
<a4j:commandLink value="CHANGE PANEL12" action="#{ajaxTestBean.changePanel12}">
<a4j:support reRender="PANEL12" event="onclick"/>
</a4j:commandLink>
<br/>
<a4j:commandLink value="CHANGE PANEL111" action="#{ajaxTestBean.changePanel111}">
<a4j:support reRender="form:PANEL111" event="onclick"/>
</a4j:commandLink>
</rich:panel>
</rich:panel>
</h:form>
لاحظ كيف يجب تحديد العنصر السفلي على أنه form:PANEL111
.
أتمنى أن يساعدك هذا!
نصائح أخرى
reRender
يعمل مع توفيرid
من الكائن المستهدف الذي تريد إعادة صياغته (داخل نفس حاوية التسمية -form
في أغلب الأحيان)- ال
id
يجب أن تكون سلسلة فريدة ، وفقًا لمواصفات HTML reRender
يسمح بالقيمة الديناميكية - أيreRender="#{myBean.currentItemsToRerender}
بناءً على ذلك ، أعتقد أنك يجب أن تكون قادرًا على تحقيق ما تريد (على الرغم من أنه ليس واضحًا تمامًا)
تحديث:
UIComponent.findComponent(..)
لديه خوارزمية محددة جيدًا لحل المعرفات. لذلك يجب الرجوع المطلق أبدا ب :
ثم تابع من خلال التسلسل الهرمي للحاويات التسمية.
يمكن أن يشير Render إلى أي مكون خارج النموذج أيضًا. على سبيل المثال هذا يعمل:
<h:form>
<a4j:commandButton reRender="panel"/>
</h:form>
<h:panelGrid id="panel">
...
</h:panelGrid>
لتطبيق MyFaces+Richfaces الخاص بي ، <rich:panel>
لم تكن العلامة تعمل كما هو موضح في الإجابة المحددة. عندما غيرتها إلى <a4j:outputPanel ajaxRendered="true" />
, ، بدأت العمل كما هو موضح هنا "u003Ca4j:commandLink>لا إعادة التجديد"
التكوين: MyFaces 2.1.10 (Facelets المستخدمة في templating) و Richfaces 4.2.3.
أتمنى أن يساعد هذا.