2015-02-12 9 views
1

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

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

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

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

+0

Шаблоны обычно находятся в WEB-INF/templates/(views | layouts). Вы также можете взглянуть на источник, как выглядят шаблоны: https://github.com/scalatra/scalatra/blob/2.4.x/scalate/src/main/scala/org/scalatra/scalate/ScalateSupport. scala # L175-L191 –

+0

Я также пробовал его с файлом в папке с просмотром и все еще не работал – Dineshkumar

ответ

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

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

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>, 
    ... -> ...)