Lift/Структура проекту
< Lift
Дерево каталогів
ред.|---lib |---project | |---boot | |---build | | |---Project.scala | |---build.properties |---src | |---main | | |---resources | | | |---props | | |---scala | | | |---bootstrap | | | | |---liftweb | | | | |---Boot.scala | | | |---sample | | | | |---comet | | | | |---lib | | | | |---model | | | | |---snippet | | | | |---view | | |---webapp | | | |---images | | | |---static | | | |---templates-hidden | | | |---default.html | | | |---WEB-INF | | | | |---web.xml | | | |---index.html | |---test | | |---resources | | |---scala | | | |---sample
project/build.properties
ред.#Project properties
#Thu Apr 07 05:59:21 EEST 2011
project.organization=sample
project.name=lift-test
sbt.version=0.7.4
project.version=1.0
build.scala.versions=2.8.1
project.initialize=false
project/build/Project.scala
ред.import sbt._
class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) {
val liftVersion = "2.3"
/**
* Application dependencies
*/
val webkit = "net.liftweb" %% "lift-webkit" % liftVersion % "compile->default"
val logback = "ch.qos.logback" % "logback-classic" % "0.9.26" % "compile->default"
val servlet = "javax.servlet" % "servlet-api" % "2.5" % "provided->default"
val jetty6 = "org.mortbay.jetty" % "jetty" % "6.1.22" % "test->default"
val junit = "junit" % "junit" % "4.5" % "test->default"
val specs = "org.scala-tools.testing" %% "specs" % "1.6.6" % "test->default"
/**
* Maven repositories
*/
lazy val scalatoolsSnapshots = ScalaToolsSnapshots
}
src/main/scala/bootstrap/liftweb/Boot.scala
ред.package bootstrap.liftweb
import net.liftweb._
import http.{LiftRules, NotFoundAsTemplate, ParsePath}
import sitemap.{SiteMap, Menu, Loc}
import util.{ NamedPF }
class Boot {
def boot {
// where to search snippet
LiftRules.addToPackages("sample")
// build sitemap
val entries = List(Menu("Home") / "index") :::
Nil
LiftRules.uriNotFound.prepend(NamedPF("404handler"){
case (req,failure) => NotFoundAsTemplate(
ParsePath(List("exceptions","404"),"html",false,false))
})
LiftRules.setSiteMap(SiteMap(entries:_*))
// set character encoding
LiftRules.early.append(_.setCharacterEncoding("UTF-8"))
}
}
src/main/webapp/index.html
ред.<lift:surround with="default" at="content">
<h2>Welcome to your project!</h2>
</lift:surround>
src/main/webapp/templates-hidden/default.html
ред.<html xmlns="http://www.w3.org/1999/xhtml" xmlns:lift="http://liftweb.net/">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<title>code:app:0.1-SNAPSHOT</title>
<lift:CSS.blueprint />
<lift:CSS.fancyType />
<script id="jquery" src="/classpath/jquery.js" type="text/javascript"/>
<script id="json" src="/classpath/json.js" type="text/javascript"/>
<style type="text/css">
/* <![CDATA[ */
.edit_error_class {
display: block;
color: red;
}
.sidebar ul {
margin:0;
padding:0;
border-bottom:1px solid #ccc;
}
.sidebar ul li {
margin:0;
padding:0;
list-style:none;
border:1px solid #ccc;
border-bottom:none;
}
.sidebar ul li a {
display:block;
padding:3px;
text-indent:30px;
text-decoration:none;
}
.sidebar ul li span {
display:block;
padding:3px;
text-indent:30px;
text-decoration:none;
}
.sidebar ul li a:hover {
background-color: #eee;
}
/* ]]> */
</style>
</head>
<body>
<div class="container">
<div class="column span-12 last" style="text-align: right">
<h1 class="alt">app<img alt="" id="ajax-loader" style="display:none; margin-bottom: 0px; margin-left: 5px" src="/images/ajax-loader.gif"/></h1>
</div>
<hr/>
<div class="column span-6 colborder sidebar">
<hr class="space" />
<lift:Menu.builder />
<div>
<lift:Msgs showAll="true"/>
<hr class="space" />
</div>
</div>
<div class="column span-17 last">
<lift:bind name="content" />
</div>
<hr />
<div class="column span-23 last" style="text-align: center">
<h4 class="alt">
<a href="http://www.liftweb.net"><i>Lift</i></a>
is Copyright 2007-2010 WorldWide Conferencing, LLC. Distributed under an Apache 2.0 License.</h4>
</div>
</div>
</body>
</html>
src/main/webapp/WEB-INF/web.xml
ред.web.xml для Java Servlet API
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<filter>
<filter-name>LiftFilter</filter-name>
<display-name>Lift Filter</display-name>
<description>The Filter that intercepts lift calls</description>
<filter-class>net.liftweb.http.LiftFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LiftFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>