Страница визуализации Scalatra не может определить процессор шаблонов

Я попытался отобразить страницу index.ssp ​​в моем контроллере scalatra, но она показывает мне ошибку:

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

Мой сервлет расширяет ScalatraServlet с помощью ScalateSupport, а мой файл находится в каталоге WEB-INF. Я оставил расширение, потому что в документе указано.ssp неявно и не требуется.

Есть ли что-нибудь еще, что мне нужно сделать, кроме этого?

2 ответа

При отображении ваших представлений Scalate будет искать макет в следующей папке: /WEB-INF/layouts/default.ssp (или default.scaml, но давайте рассмотрим ssp). Итак, создайте этот файл и добавьте следующее: (этот фрагмент взят из книги "Скалатра в действии")

<%@ 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>

В сервлете добавьте следующее:

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

Это должно работать.

С помощью 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>,
   ... -> ...)
Другие вопросы по тегам