我在Java方面的背景几乎不存在,而且我已经在Scala上阅读并在REPL上玩了几周(我确实有PHP经验)。我刚刚开始尝试使用Scala和Lift框架创建一个简单的Web服务器。
我设法让它运行(使用Windows 7 x64,Java版本:1.8.0_60)。
关注this和this示例,以下是我从头开始运行服务器所做的工作:
已安装Java 1.8.0_60
使用.msi安装程序安装SBT
创建build.sbt
organization := "org.test"
name := "testproj1"
version := "0.1-alpha"
scalaVersion := "2.11.7"
libraryDependencies ++= {
val liftVersion = "2.6"
Seq(
"net.liftweb" %% "lift-webkit" % liftVersion % "compile",
"net.liftmodules" %% "lift-jquery-module_2.6" % "2.9",
"org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container,test",
)
}
enablePlugins(JettyPlugin)
创建project/plugins.sbt
addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "2.0.4")
创建project/build.properties
sbt.version=0.13.8
创建src/main/scala/bootstrap/Boot.scala
package bootstrap.liftweb
import net.liftweb._
import net.liftmodules.JQueryModule
import util._
import Helpers._
import common._
import http._
import sitemap._
import Loc._
import code.snippet._
class Boot {
def boot {
LiftRules.addToPackages("code")
val entries = List(
Menu.i("Home") / "index",
Menu.i("DynamicTest") / "helloworld",
Menu.i("Static") / "static" / **
)
LiftRules.setSiteMap(SiteMap(entries:_*))
LiftRules.early.append(_.setCharacterEncoding("UTF-8"))
LiftRules.htmlProperties.default.set(
(r: Req) => new Html5Properties(r.userAgent)
)
JQueryModule.InitParam.JQuery = JQueryModule.JQuery21Z
JQueryModule.init()
}
}
创建src/main/webapp/WEB-INF/web.xml:
LiftFilter
Lift Filter
The Filter that intercepts Lift calls
net.liftweb.http.LiftFilter
LiftFilter
/*
然后在cmd,我运行sbt,更新,然后使用jetty:start启动服务器。
一切似乎都很好。我可以做简单的静态页面和站点映射。但是,当我尝试使用Ajax时,我收到了一个JS错误:
未捕获的ReferenceError:未定义liftajax
我尝试做的只是使用ajaxcall()进行简单的内容替换。这就是我对helloworld.html的所作所为:
DynamicBello!
This page has dynamic content.
Hello, my dear :)
Bubbai
这是src/main/scala/code/HelloWorld.scala
package code.snippet
import net.liftweb._
import util.Helpers._
import http.js._; import JE._; import JsCmds._
import http.SHtml._
class HelloWorld {
def render = ":submit [onclick]" #> ajaxCall(
ValById("name-input"),
n => SetValById("name", n)
)
}
(我注意到如果我将脚本标记放在html文件的
中,它就不会被包含在内)。我从浏览器中得到的是:This page has dynamic content.
value="Submit Name" type="submit">Hello, :)
我见过this question。那里的答案告诉我要启动并运行JQuery模块,我做了。加载了jQuery文件。但当然liftajax中的onclick未在任何地方定义。
所以主要的问题是,liftajax应该从哪里来,以及我为了让它运行而缺少什么?感谢。