Страница визуализации 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>,
... -> ...)