2010-07-19 2 views
4

다른 모든보기 페이지가 상속하는 마스터 템플릿을 만들고 싶습니다. freemarker templating에 대한 조언, 마스터 템플릿을 만들고 싶습니다.

그래서 마스터 템플릿을해야합니다 : (사용자가 로그인되어있는 경우)

HEADER 
--CONTENT-- 
FOOTER 
  1. 헤더 쇼를 선택적 것, 사용자 이름 및 기타 사용자 개체 속성.

  2. --CONTENT--는 다른 '상속 (inheriting)'보기 페이지가 내용을 삽입하는 자리 표시 자입니다.

제 질문은 freemarker에서 가능합니까? 그렇다면 어떤 지침이 있습니까?

컨트롤러 개체에서 헤더에 사용자 개체를 전달하는 방법은 무엇입니까? 이상적으로 객체는 각보기 페이지 이외의 다른 곳으로 전달됩니다 (각보기 페이지마다이 코드를 유지하지 않아도 됨).

답변

2

예, 가능합니다. 우리의 응용 프로그램에서 사용자 개체 같은 것들 세션 범위에 존재하지만,이 모든 범위 프리 마커가 액세스가 될 수있다 : 당신은 Session. 생략 할 수 있습니다 렌더링 기술과 지정된 변수 이름에 대한 다양한 범위를 검색합니다

<#if Session.the_user?? && Session.the_user.loggedIn> 
    <#-- header code --> 
</#if> 

합니다.

<#nested> 

뷰 페이지는 다음과 같이 마스터 템플릿의 사용을 선언 : 당신이 내용을 넣어보기 페이지를 할 위치를

내용을 삽입하려면, 마스터 템플릿의 지점이 포함 다음 : 나는 프리 마커 템플릿 상속했다

<#import "/WEB-INF/ftl/path/to/template/master.ftl" as com> 
<@com.template> 
    View page content 
</@com.template> 
+0

저는 스프링 MVC를 사용하고 있으며 모든 작업 방법 이전에 실행되는 이벤트 중에 사용자가 로그인하면 User 객체를로드합니다. 그러면 사용자 객체를 어디에 저장해야합니까? – Blankman

+0

모든 동작 전에 실행되면 요청 범위가 사용자 객체를 보유하기에 적합한 후보라고 들립니다. – Pat

+0

그래서 request.attributeS? – Blankman

관련 문제