我已尝试在我的scalatra控制器中呈现页面index.ssp,但它显示错误:
ssp("index")
//Error : Template file extension missing. Cannot determine which template processor to use.
My Servlet使用ScalateSupport扩展ScalatraServlet,我的文件位于WEB-INF目录中。我已离开扩展名,因为文件说明.ssp是隐含的而不是必需的。
除此之外还有什么我需要做的吗?目录。
答案 0 :(得分: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")
这应该有效。
答案 1 :(得分: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>,
... -> ...)