1

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

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

我的 Servlet 使用 ScalateSupport 扩展了 ScalatraServlet,我的文件位于 WEB-INF 目录中。我已经离开了扩展,因为文档中声明的 .ssp 是隐含的并且不是必需的。

除了这个目录,我还需要做什么吗?

4

2 回答 2

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/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")

这应该有效。

于 2015-04-01T14:35:49.013 回答
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>,
   ... -> ...)
于 2017-06-09T09:21:31.217 回答