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

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

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

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

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


person Dineshkumar    schedule 12.02.2015    source источник
comment
Шаблоны обычно находятся в WEB-INF/templates/(views|layouts). Вы также можете посмотреть исходный код поиска шаблонов: github.com/scalatra/scalatra/blob/2.4.x/scalate/src/main/scala/   -  person Stefan Ollinger    schedule 13.02.2015
comment
Я также пробовал это с файлом в папке представлений и все еще не работал   -  person Dineshkumar    schedule 13.02.2015


Ответы (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>

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

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

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

person kostas    schedule 01.04.2015

В 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>,
   ... -> ...)
person Joel Mata    schedule 09.06.2017