Scalatra渲染页面无法确定模板处理器

时间:2015-02-12 02:29:50

标签: scalatra ssp

我已尝试在我的scalatra控制器中呈现页面index.ssp,但它显示错误:

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

My Servlet使用ScalateSupport扩展ScalatraServlet,我的文件位于WEB-INF目录中。我已离开扩展名,因为文件说明.ssp是隐含的而不是必需的。

除此之外还有什么我需要做的吗?目录。

2 个答案:

答案 0 :(得分:2)

渲染视图时,Scalate将在以下文件夹中查找布局: /WEB-INF/layouts/default.ssp(或default.scaml,但让我们考虑一下ssp)。 因此,创建此文件并添加以下内容:(此代码段取自Scalatra in Action一书)

<%@ 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/pagesbla.ssp将包含您的html内容,例如:

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

在servlet中添加以下内容:

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

这应该有效。

答案 1 :(得分: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>,
   ... -> ...)