2015-02-12 53 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>, 
    ... -> ...)