2014-10-21 6 views
2

tomcat7에서 서블릿 3.0과 함께 Rythm 템플릿 엔진을 사용하려고합니다.
템플릿을 WebContent 디렉토리에서 Rythm 엔진으로 렌더링하고 싶습니다. 그러나 템플릿을 감지하지 못합니다. 서블릿 3.0에서 Rythm 템플릿 엔진을 사용할 수 없습니다.

public void init(ServletConfig config) throws ServletException { 
     Map <String, Object> context = new HashMap <String, Object>(); 
     //String filePath = new File("").getAbsolutePath(); 
     //filePath.concat("WebContent"); 
     context.put("home.template", "WebContent"); 
     Rythm.init(context); 
    } 

다음 내가

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     Map <String, Object> args = new HashMap <String, Object>(); 
     args.put("a", "World"); 
     PrintWriter out = response.getWriter(); 
     out.println(Rythm.render("NewFile.html", args)); 
    } 

doGet 방법에 Rythm.renderNewFile.html을 렌더링하기 위해 시도로

는 서블릿 init() 방법에서 나는 Rthym 엔진을 초기화하지만 그것은 단지 "NewFile.html"을 보여주고있다 브라우저에서 (NewFile.html의 내용이 아니라 "NewFile.html"문자열 만)

답변

2

리듬와 내 경우 유사한 문제는 파일 이름 앞에 디렉토리를 작성하는 데 도움이 :

Rythm.render("templates/" + templateFileName, parameters); 

home.template 변수가 너무 나를 위해 작동하지 않았다 설정.

+0

어떤 생각에서 찾을 수 있습니다 : 다음은 간단한 프로젝트는 그것을 증명? – Ranveer

+0

아마 Rythm의 버그입니다. – deamon

0

Rythm은 리소스 관리자로 템플릿 파일을로드합니다. 리소스 관리자의 기본 구현은 리소스로드를 Thread.currentThread.getContextClassLoader()으로 위임합니다.이 리소스는 webapp 폴더 아래의 리소스를로드 할 수 없습니다. Resolving the root of a webapp from getResource을 참조하십시오.

webapp 폴더 아래에서 템플릿을로드하려면 고유 한 리소스 관리자를 만들고 템플릿을로드하려면 ServletContext에 위임해야합니다.

다행히도 그렇게 할 필요가 없습니다. 그냥 resources 폴더 아래에 템플릿을 넣어 다음 예상대로 작동합니다. 왜 그렇게이다

enter image description here

프로젝트 소스 코드

https://github.com/greenlaw110/rythm-gh-issue-241