2009-06-08 2 views
0

JSF 페이지에서 부분을 구성 할 수 있어야하는 웹 애플리케이션이 있습니다. 그래서 예를 들어, 내 응용 프로그램은 다음과 같은 폴더/파일 구조로 여러 개의 작은 부분으로 각각 분할 된 상상 :인 페이지 구성을 만드는 방법. 비아 c : 세트?

/partname 
    /config 
     config.xhtml 
    /template 
     generaltemplate.xhtml 
    search.xhtml 
    results.xhtml 

Search.xhtml & results.xhtml은 모두, generaltemplate.xhtml을 템플릿 파일을 사용합니다. 이 generaltemplate은 config.xhtml의 내용을 포함해야합니다. 이 계획은 응용 프로그램이 액세스 할 수 있도록이 페이지에 모든 공유 구성을 저장하는 것입니다. 하지만이 일을하는 데 문제가 있습니다.

< c : config.xhtml에 >을 설정하면 변수가 해당 구성 페이지에서만 액세스 할 수있는 것처럼 보입니다. 이전에 나는 <c의 범위를 변경했을 것입니다 : >을 요청하면 ny 문제가 해결됩니다. 하지만 JSF가 다른 방식으로 작동하기 때문에이 경우 스코프가 쓸모 없다는 것을 알고 있습니다.

누구나이 한 페이지에서 모든 구성을 만들고 내 응용 프로그램 전체에서 액세스 할 수있는 방법에 대한 제안 사항이 있습니까?

이 응용 프로그램은 Seam을 사용하여 작성되므로 Seam의 항목을 사용할 수 있습니다.

+0

이것이 MVC 패턴의 작동 방식이 아니며 잘못된 위치에 구성을 적용하고 있음을 이해합니다.그러나 불행히도 내 손은이 하나에 묶여 있으며 나는 단지 내가해야 할 일을하는 가장 쉬운 방법을 찾고 있습니다. –

답변

0

Seam은 MVC (Model-View-Controller) 프레임 워크입니다. 뷰는 JSF 페이지를 사용하여 구현됩니다. 구성은 모델의 일부이므로 페이지에 넣으면 안됩니다.

올바른 계층화를 구현하려면 JSF 페이지에서 참조하는 일종의 전역 액세스 가능 bean (.properties 파일로 채워진 Seam으로 인스턴스화)에 배치하는 것이 좋습니다.

0

얼마나 많은 리팩토링이 관련되는지는 모르지만 범위를 적절하게 구성하는 구성 bean을 만든 다음 c : set 태그를 사용하여 구성 bean을 설정할 수 있습니다. 그런 다음 나중에 페이지에서 직접 변수에 액세스하는 대신 구성 bean을 사용할 수 있습니다. 설정 문제 :

을 템플릿에서 :

... 
<html ... 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
... 
<body> 
    <ui:param name="testParam" value="Test" /> 

    <ui:insert name="test"> 
    </ui:insert> 
... 

이 경우 UI의 가치 : 당신은 C에 대해, Facelets에 사용할 수 있습니다 가정

1

PARAM은이 될 수있는 변수로 사용할 수 있습니다 템플릿을 사용하는 페이지에서 사용됩니다. 템플릿을 사용하여

페이지 : 그렇게 말

... 
<html ... 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
... 
<body> 
<ui:composition template="/WEB-INF/templates/template.xhtml"> 
    <ui:define name="test"> 
<h:outputText value="#{testParam}" /> 
... 

, 나는이 실제로 사용되어야한다 극소수의 경우 생각할 수 있습니다. 손이 묶여 있지 않으면 응용 프로그램/세션 영역 Bean에서 값을 가져와야합니다.

는 편집 : UI의 장소에 설정 : 나는 매우 바쁜 마음에 온 첫 번째 대답을 사용하지만, 앞서 확인을 두 번하지 사과

, 나는 AC를 사용하여 확인 PARAM 일하는 것이 이전에 정의 된 설정을 사용하여 똑같이 적용됩니다. 따라서 템플릿에서 대신 사용할 수 있습니다. 이것은 xmlns : c = "http://java.sun.com/jstl/core"도 포함시켜야 함을 의미합니다.

관련 문제