2011-09-24 2 views
0

FreeMarker를 사용하여 서블릿을 사용하여 복잡한 웹 페이지를 작성하려고합니다.freemarker (또는 다른 템플릿 엔진)를 사용하여 여러 중첩 템플릿 처리

이 페이지에는 3 개의 기본 구성 요소가 있습니다. 상단에는 탐색 모음이, 왼쪽에는 광고 표시 줄, 가운데에는 기본 콘텐츠 섹션이 있습니다. 나는 이들 각각을 그리기 위해 별도의 서블릿을 가지고있다. 각 서블릿은 html5 섹션을 만들어 내며 freemarker를 사용하거나 사용하지 않을 수 있습니다.

위의 모든 것은 freemarker로 템플릿화된 주 웹 페이지 내부입니다.

문제는 이것입니다. 메인 페이지의 템플릿은 다음과 같이 (단순위한 스트라이프 많이) 같습니다

<html> 
    <body> 
    <!--lots of stuff in between--> 

    <section-nav> <!--this should be filled by output of NavServlet.respond --> 

    <!--lots of stuff in between--> 

    <section-content> <!-- this comes from arbitrary servlet for actual content --> 

    <section-advertise> <!--this should be filled by output of AdvertiseServlet --> 

    </body> 
</html 

방법 프리 마커를 사용하여 위의 구조를 처리 할 수 ​​있습니까? 주 페이지에 대해 template.process()를 수행하면 html 시작 태그와 종료 태그가 모두 작성되지만 원하는 것은 다른 서블릿 (nav, advertise 등)에게 html 끝 태그 앞에 내용을 생성 할 기회를주는 것입니다.

우리는 FreeMarker를 사용할 수 없다면 다른 솔루션을 템플릿으로 사용할 수도 있습니다.

답변

2

TemplateDirectiveModel을 구현하여 (예 : #macro 인 FTL과 달리) Java로 맞춤 명령어를 생성해야합니다. 템플릿 (예 : <@my.embed source="thisAndThatServlet" />)에서 호출하면 Writer이 수신되고 원하는대로 작성할 수 있습니다. 따라서 물론 다른 서블릿을 포함하거나 Java에서 수행 할 수있는 모든 작업을 수행 할 수 있습니다. 중첩 된 Template.process 호출이 지원됩니다. 예제로 소스 코드 freemarker.ext.servlet.IncludePage을 참조하십시오.

+0

조금 도와 줘서 고마워. –