2015-02-12 81 views
1

我試圖呈現在我的Scalatra的控制器頁面index.ssp,但它表明了我一個錯誤:Scalatra的渲染頁面無法確定模板處理器

ssp("index") 
//Error : Template file extension missing. Cannot determine which template processor to use. 

我的servlet擴展ScalatraServlet與ScalateSupport和我的文件在WEB-INF目錄中。我已經離開了擴展名,因爲文檔聲明.ssp是隱含的而不是必需的。

除此之外還有什麼需要做的嗎?

+0

模板通常在WEB-INF/templates /(views | layouts)中。您還可以查看源代碼模板的查找方式:https://github.com/scalatra/scalatra/blob/2.4.x/scalate/src/main/scala/org/scalatra/scalate/ScalateSupport。斯卡拉#L175-L191 – 2015-02-12 23:07:50

+0

我也試過它與視圖文件夾中的文件,仍然沒有工作 – Dineshkumar 2015-02-13 04:47:24

回答

2

渲染視圖時Scalate將在以下文件夾中尋找佈局: /WEB-INF/layouts/default.ssp(或default.scaml,但讓我們考慮ssp)。 因此,創建這個文件,並添加以下內容:(本段來自這本書了Scalatra中採取的行動)

<%@ val body:String %> 
<html> 
    <head> 
    <title>Scalatra CMS</title> 

    <!-- Bootstrap --> 
    <link href="/css/bootstrap.min.css" rel="stylesheet" media="screen"> 

    <style type="text/css"> 
     body { 
     padding-top: 60px; 
     } 
    </style> 
    </head> 
    <body> 
    <div class="navbar navbar-inverse navbar-fixed-top"> 
     <div class="navbar-inner"> 
     <div class="container"> 
      <a class="btn btn-navbar" data-toggle="collapse" 
       data-target=".nav-collapse"> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      </a> 
      <ul class="nav"> 
      <li> 
       <a class="brand" href="/" id="server"> 
       Scalatra CMS 
       </a> 
      </li> 
      </ul> 
     </div> 
     </div> 
    </div> 
    <div class="container"> 
    <%= unescape(body) %> 
    </div> <!-- /container --> 
    </body> 
</html> 

然後添加一個頁面,說bla.ssp/WEB-INF/templates/views/pages。 的bla.ssp將包含HTML內容,例如:

<div class="row"> 
    <h2>everyone </h2> 
    <p class="lead">hello </p> 
</div> 

在servlet中添加以下內容:

layoutTemplate("/WEB-INF/templates/views/pages/bla.ssp") 

這應該工作。

0

隨着了Scalatra 2.5.1我被賦予了不同的默認文件夾結構:

webapp\WEB-INF\templates\layout\default.jade 
webapp\WEB-INF\templates\views 

是我增加:

webapp\WEB-INF\templates\views\index.ssp 

,然後在控制器我有:

contentType="text/html" 
jade("/templates/views/index.ssp", "layout" -> "WEB-INF/templates/layouts/default.jade", 
    "title" -> <title>, 
    ... -> ...)