2013-05-30 23 views
9

'u içerir. Farklı uygulamalarda kullanılabilecek bir Facelet'i var. Kopyalamıyorum, ancak yeniden kullanıyorum.Destek fasulyesinin bir Facelet'e parametre olarak geçirilmesi

Bir kompozit bileşen kullanmak istemediğimden, görünümü bir parametre olarak yönetecek olan destekleyici bakladan geçmem gerekiyor. Facelet ve hangi fasulye görünümünü yöneteceğini belirtin. Bunu nasıl başarabilirim?

bana bir örnek vereyim:

<ui:composition template="/resources/common/templates/template.xhtml" 
    xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich" xmlns:fn="http://java.sun.com/jsp/jstl/functions"> 
    <ui:define name="content"> 
     <!-- somehow establish the backing bean that will manage formView.xhtml --> 
     <!-- f:set assign="ParameterBean" value="#{Bean}"/--> 
     <ui:include src="formView.xhtml" /> 
    </ui:define> 
</ui:composition> 

formView.xhtml:

<ui:composition template="/resources/common/templates/template.xhtml" 
    xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich" xmlns:fn="http://java.sun.com/jsp/jstl/functions"> 
    <ui:define name="content"> 
     <h:outputText value="#{ParameterBean.texto}" /> 
    </ui:define> 
</ui:composition> 

cevap

22

Bunun için <ui:param> kullanabilirsiniz. <ui:include>'da iç içe olması gerekir. Beton sorununa


İlgisiz

<ui:include src="formView.xhtml"> 
    <ui:param name="ParameterBean" value="#{Bean}" /> 
</ui:include> 
, örneğin değişken isimleri küçük harfle başlamak zorundadır standart Java Naming Conventions durumu. Kodunuzu, sırasıyla parameterBean ve #{bean} kullanılacak şekilde değiştirmelisiniz.

+0

nasıl 'ParameterBean' örneğinde yöntemleri çağırmak için başvuru yapmak? – Thufir

0

Ben bu ararken yararlı dün, burada yabancı şablona olmadan bunu nasıl basit bir versiyonudur bulurdum Çünkü tanımlar ve ad:

File1.xhtml (kök etiket ayrıca Ayrıca iç içe

<ui:composition ... xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets" ... > 
    <h:outputLabel value="#{person.name}" /> 
</ui:composition> 


yılında)

<ui:include src="File2.xhtml"> 
    <ui:param name="person" value="#{whatever_value_you_want_to_pass}" /> 
</ui:include> 

File2.xhtml önemli değil aynı şekilde.

File1.xhtml

<ui:include src="File2.xhtml"> 
    <ui:param name="person" value="#{whatever_value_you_want_to_pass}" /> 
</ui:include> 

File2.xhtml

<ui:composition ... xmlns:ui="http://java.sun.com/jsf/facelets" ... > 
    <ui:include src="File3.xhtml"> 
    <ui:param name="name" value="#{person.name}" /> 
    </ui:include> 
</ui:composition> 

File3.xhtml

<ui:composition ... xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets" ... > 
    <h:outputLabel value="#{name.length}" /> 
</ui:composition> 
+0

Bunun, aşağıdaki cevaptan farklı olduğunu göremiyorum? – Kukeltje

+0

Cevabın nasıl kullanılacağını tam olarak anladığım için zor bir zaman geçirdim, bu yüzden başkaları için daha açık hale getirmeye çalıştım. – Chris

+0

Ardından, soruyu 'düzenleyebilir' ve bu şeyleri kaldırabilir ve 'yorum' bölümünde bunu neden yaptığınızı söyleyebilirsiniz. Diğerleri değişikliği kabul ettiğinde, görünür olacaktır. O zaman ikinci bir cevap oluşturmaya gerek yok. – Kukeltje

İlgili konular