2012-11-28 2 views
3

나는 플레이를 변환하려고하고있다! Scalatra application에 2.0 application. 나는 약간의 성공을 거두었지만 3 가지 문제가 남아 있습니다. 그 중 하나는 자체적으로 ticket입니다.재생에서! Scalatra, 템플릿 두통, 디렉토리 구조

1) src/main/webapp/WEB-INF/viewssrc/main/webapp/WEB-INF/layouts에는 표준 디렉토리 구조의 레이아웃이 포함되어 있음을 이해합니다. 다른 계층에서 작동하도록 할 수 없었습니다. 내가 2 서블릿이 다른 그들에 대한 전망을 원한다면 : 내가 제공 한 예에서

- WEB-INF 
- servlet1 
    - views 
    - layouts 
- servlet2 
    - views 
    - layouts 

을, 나는 적절하지 직접 WEB-INF/views 또는 WEB-INF/layouts에서 아무것도 참조 할 수 없습니다. 아마도 나는 web.xml에서 뭔가를 올바르게 선언하지 않기 때문입니까?

// works 
get("/") { 
    contentType = "text/html" 
    templateEngine.layout("/WEB-INF/views/app.jade") 
} 

// no worky 
get("/") { 
    contentType = "text/html" 
    templateEngine.layout("/WEB-INF/servlet1/views/app.jade") // where servlet1/layouts/default.jade exists 
} 

2) 템플릿 기능은 무엇입니까? 이 변환이 작동하려면 Scalatra (Jade, Mustache 등)에서 제공하는 것과 함께 Underscore 템플릿을 사용할 수 있어야합니다. 모든 기본 예제에서 사용하므로 Jade를 선택했습니다.

저는 여기에 두 가지 하위 문제가 있습니다.

1) 나는에 javascripts를 포함 시켰음에도 불구하고 Jade와 함께 Underscore 템플릿을 사용할 수 없습니다. 어쩌면이게 효과가 있을지도 모릅니다. 이것은 아마도 ...

2) My include 진술은 실제로 부분을 포함하는 대신 태그처럼 보이므로 첫 번째 하위 문제를 테스트하기가 정말 어렵습니다.

// Nav 
include nav 

// Action1 
include action1 
include action2 

// Wireframe 
div#default-region 
    script#template-layout(type="text/template") 
    div#region-nav 
    div#region-content 

// CSS and JavaScripts relative to Backbone app 
include assets 

이 어떤 도움을 주시면 감사하겠습니다 :

<!--/Nav --> 
<include>nav</include> 
<!--/Action1 --> 
<include>action1</include> 
<include>action2</include> 
<!--/Wireframe --> 
<div id="default-region"> 
    <script id="template-layout" type="text/template"> 
    <div id="region-nav"></div> 
    <div id="region-content"></div> 
    </script> 
</div> 
<!--/CSS and JavaScripts relative to Backbone app --> 
<include>assets</include> 

는 해당 app.jade 파일처럼 보이는 무엇!

+0

사이드 댓글 : 옥션 파일에서'div's를 제거 할 수 있습니다. 기본값입니다. 눈이 편합니다. – nilskp

답변

2

보기를 다르게 구성하거나보기에 다른 파일 시스템 구성을 제공해야합니다. 이를 overriding getRenderContext으로 구성 할 수 있습니다.

templateEngine.layout을 호출 할 필요는 없지만 대신 헬퍼 메소드를 사용하십시오. 레이아웃이 옥으로 만든 경우 jade("my_view", "layout" -> "/WEB-INF/layouts/authenticated.jade")

this 등을 포함 할 수 있습니까?

+0

나는 다른 사람들이 정보를 필요로 할 때를 대비해 여기에 모든 것을 보관하고 싶습니다! jade ("my_view", layout = "...")를 호출하면 "layout"이 오류를 발생시킵니다. Map [String, Any]을 기대하고있는 것처럼 보입니다. 그래서 약간 혼란 스럽습니다. –

+0

죄송합니다. 코드 샘플을 실수로 작성했습니다. 나는 그것을 편집했다. http://scalatra.org/guides/views.html#layouts –

+0

오, 분명히 문서를 잘못 읽었습니다. 감사! –