2013-05-30 11 views
9

다른 응용 프로그램에서 사용할 수있는 Facelet이 있습니다. 복사하지 말고 다시 사용하십시오. 뷰를 매개 변수로 관리 할 백킹 빈을 전달해야합니다. 일부 논리는 사용되는 애플리케이션에 따라 다를 수 있으므로Backing Bean을 매개 변수로 Facelet에 전달하면 다음을 포함합니다.

복합 컴포넌트를 사용하지 않고 뷰렛을 관리하고 뷰를 관리 할 빈을 지정하십시오. 이것을 어떻게 할 수 있습니까?

저를 예를 들어 보겠습니다 :

<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> 

답변

22

당신은 그것에 대해 <ui:param>를 사용할 수 있습니다. <ui:include>에 중첩되어야합니다. 구체적인 문제에


관련없는

<ui:include src="formView.xhtml"> 
    <ui:param name="ParameterBean" value="#{Bean}" /> 
</ui:include> 
예 변수 이름은 소문자로 시작해야한다는 표준 Java Naming Conventions 상태입니다. parameterBean#{bean}과 같은 방식으로 코드를 변경해야합니다.

+0

어떻게'ParameterBean' 인스턴스의 메소드를 호출하는 참조합니까? – Thufir

0

내가이 찾고 있던 때 도움이 어제, 여기에 외부 템플릿없이,이 작업을 수행하는 방법의 간단한 버전을 발견 한 것 때문에, 정의와 네임 스페이스 :

File1.xhtml (루트 태그는 더 또한 중첩 할 수

<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> 


에서)

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

File2.xhtml를 중요하지 않습니다 같은 방식.

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

이것이 어떻게 아래 답변과 다른지 알 수 없습니까? – Kukeltje

+0

답변을 어떻게 사용했는지 정확하게 이해하기가 힘들어서 다른 사람들에게 더 분명하게 보여 주려고했습니다. – Chris

+0

그런 다음 질문을 '편집'하고 이러한 사항을 제거하고 '의견'에서 언급 한 이유를 설명 할 수 있습니다. 다른 사람이 변경 사항을 '수락'하면 해당 변경 사항이 표시됩니다. 다음에 두 번째 대답을 작성할 필요가 없습니다. – Kukeltje