سؤال

سؤال تم تحريره ...

مرحبًا،

أرغب في تحميل ملف .xhtml من المكون المركب الخاص بي من حبة دعم ، وإضافته إلى الصفحة ديناميكيًا. يأتي اسم ملف .xhtml يشكل متغيرًا.

السابق.:

public MyBean (){

    String componentFile = "myCompositeComponent.xhtml"

    public String addComponentToPage(){

          //how do that?...

          return null;
    }

} 

شكرًا لك!

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

المحلول

هذا ليس المستطاع. مكون مركب يعتمد على القالب ولا يمكن استخدامه إلا في طرق العرض. أفضل رهان لك هو تكرار رمز JSF بالضبط الذي كتبته في الأصل في المكون المركب في النموذج. من الأفضل أن يكون لإنشاء جديرة بالغة @FacesComponent الفصل الذي يمتد UIComponent, ، مع استكمال أ @FacesRenderer. صحيح ، إنها مهمة شاقة وغير شفافة ، ولكن بهذه الطريقة ستنتهي بمكون قابل لإعادة الاستخدام في كل من العرض والنموذج بواسطة خط رمز واحد.

البديل - البديل هو وضع جميع المكونات الممكنة في العرض واستخدام rendered ينسب.

<my:component1 rendered="#{bean.myComponentType == 'component1'}" />
<my:component2 rendered="#{bean.myComponentType == 'component2'}" />
<my:component3 rendered="#{bean.myComponentType == 'component3'}" />
...

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

نصائح أخرى

لا أفهم لماذا تريد إضافة مكون مركب من حبة دعم. أعتقد أنك تريد أن تجعلها مرئية ديناميكيًا في حالة حدوث حدث ، ولكن لذلك يوجد Ajax Render.

على سبيل المثال ، يمكنك القيام بما يلي:

<h:panelGroup id="composite" rendered="#{myBean.renderComponent}">
    <my:compositecomponent/>
</h:panelGroup>

ال renderComponent مخازن الممتلكات أ boolean القيمة. يمكنك تبديل هذه القيمة و redender composite مع مثل ريتشفس <a4j:commandLink>.

أتمنى أن يساعد ذلك ، دانيال

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