我正在努力学习如何使用升降机.我可以通过从Starting with Lift运行maven命令(之前我没有maven经验)来创建项目框架.它成功下载了所需的依赖项,一切正常,但它没有下载源 - 我想看看电梯是如何从内部工作的.
看起来它从这里下载依赖项,并且有编译的.jar文件以及源代码 - 有lift-mapper-1.0.jar和lift-mapper-1.0-sources.jar,但只下载了lift-mapper-1.0.jar到我的本地存储库.我可以手动下载源代码,但那里只有几个文件夹.那么,有没有办法告诉Maven下载与源的依赖关系?
使用企业java bean部署lift应用程序时遇到了麻烦.有一个简单的例子:
@Stateless
class TestEJB {
def a = "hello"
}
object TestApi extends XMLApiHelper{
@EJB
private var bean:TestEJB = _
def createTag(a:NodeSeq) =
def dispatch: LiftRules.DispatchPF = {
case Req("test" :: Nil, "", GetRequest) =>
() => PlainTextResponse( bean.a )
}
}
Run Code Online (Sandbox Code Playgroud)
在线上有NullPointerException bean.a,这意味着bean还没有很好地初始化.为什么?
有没有办法使用Mapper o Record Framework在Lift中定义适当的继承模型,其中有一个父类表和一个每个子表一个表?
我需要做些什么才能为friends_count提取值.我注意到screen_name已经在Status对象和case类中定义.仍然需要扩展Js或JsObject的不同
object TweetDetails extends Js { val friends_count = 'friends_count ? num }
Run Code Online (Sandbox Code Playgroud)
然后将它与JsObjects列表中的每个json对象进行模式匹配,如下所示.符号令人困惑:
scala> val friends_count = 'friends_count ! num // I wish SO understood Scala's symbols
val twtJsonList = http(Status("username").timeline)
twtJsonList foreach {
js =>
val Status.user.screen_name(screen_name) = js
val Status.text(text) = js
val friends_counts(friends_count) = js //i cannot figure out how to extract this
println(friends_count)
println(screen_name)
println(text)
Run Code Online (Sandbox Code Playgroud)
}
我是SBT和scala世界的新手.我想创建一个电梯应用程序,在探索如何做到这一点,我偶然发现我必须使用SBT.所以我去了github wiki页面并按照windows的说明进行操作.我下载了那里给出的jar并创建了sbt.bat并将这两个文件放在c:\ sbt中并将其添加到我的路径中.然后我去了c:\ liftprojects并输入了sbt.
它做了一些事情,但在任何地方,我都期望某种类型的向导,它会问我想要构建什么样的项目,以及生成目录结构,就像mvn:archetype:generate但它没有做任何事情.它只是运行了一些下载并创建了两个目录
project
boot
blah
target
blah
target
scala 2.8.1
blah
Run Code Online (Sandbox Code Playgroud)
在github wiki中,它说sbt遵循maven bir结构但我在这里看不到它.
我做错了什么.我坚持这个.我所需要的只是知道如何创建一个电梯应用程序或一个scala项目.
我想在我的电梯应用中阅读xml文件:
val data = XML.load(new java.io.InputStreamReader(new java.io.FileInputStream(filename),encoding));
但是,我得到了java.io.FileNotFoundException.我应该把文件放在哪里,以及我的scala代码中的正确路径是什么?
BTW - 我正在使用嵌入式码头进行测试,尽管我需要开发环境和生产的解决方案.
我正试图在我的电梯项目中开始使用scalaz.为此,我正在重写一些代码来满足风格.考虑用于登录用户的代码:
def login: CssSel = {
var password = ""
def submit() {
if (doLogin) S.redirectTo("/index")
else S.error("Wrong password")
}
"name=pwd" #> SHtml.password(password, password = _) &
"type=submit" #> SHtml.onSubmitUnit(submit)
}
Run Code Online (Sandbox Code Playgroud)
因此,应该以某种方式使用状态monad重写.但我只是不明白,怎么样.试试这个:
val result = for {
s <- init[String]
pass <- SHtml.password(s, put(_))
newPass <- init[String]
res <- "name=pwd" #> pass &
"type=submit" #> SHtml.onSubmit { _ =>
if (User.logIn("username", newPass)) S.redirectTo("/index")
else S.error("Wrong password")
}
} yield (newPass, res)
result ! ""
Run Code Online (Sandbox Code Playgroud)
UPD:根据答案更新了示例.
状态单子在scalaz任何好的教程/解释,说明如何使用gets,put …
我需要操纵和计算许多与日期相关的事情,例如"今天是吗?","是在昨天之前?","现在加上3天"等等.在scala中是否有任何库或dsl可以帮助解决这个问题?我希望有一些隐含的转换.
我将使用升降机片段,因此升降机助手也可以.我看到TimeHelpers在电梯里有一些方法,这是一个好的开始,但我正在寻找更多的东西.
我现在正在学习Lift.当我阅读有关模板的内容时,我知道他们有许多在编译时没有进行类型检查的东西:
是否有任何替代方案可以使这些问题不那么严重,即库中的外部代码检查程序或选项可以以类型安全的方式执行相同操作?或者可能存在另一个在这种关系中更严格的Web框架(可能是其他语言).
我正在尝试开始使用Lift框架,阅读Lift in Action.我想跟随这些示例,但我立即遇到了安装Lift的问题.我知道有很多方法可以轻松地开始使用Lift,但是我想使用Lifty,就像本书一样,能够遵循它.
问题在于,sbt自从该书出版以来,Lifty和(以及Lift也是如此!)都向前发展.我sbt从Ubuntu的Typesafe存储库安装.现在我被困在尝试安装Lifty.
继Lifty文档和对SO这个答案 -由于这一事实Lifty还没有发布二进制文件sbt0.11.3 -我想我应该把在下面~/.sbt/plugins/build.sbt:
resolvers += Resolver.url("sbt-plugin-releases", new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/"))(Resolver.ivyStylePatterns)
addSbtPlugin("org.lifty" % "lifty" % "1.7.4")
libraryDependencies +=
Defaults.sbtPluginExtra(
"org.lifty" % "lifty" % "1.7.4",
"0.11.2",
"2.9.1"
)
Run Code Online (Sandbox Code Playgroud)
后者是告诉sbt使用Lifty插件sbt 0.11.2.
现在sbt似乎能够下载Lifty并正确启动,但我没有lifty命令.所以,当我这样做
lifty learn lift https://raw.github.com/Lifty/lifty/master/lifty-recipe/lifty.json
Run Code Online (Sandbox Code Playgroud)
sbt 抱怨:
[error] Not a valid key: lifty (similar: history)
[error] lifty learn lift https://raw.github.com/Lifty/lifty/master/lifty-recipe/lifty.json
[error] ^
Run Code Online (Sandbox Code Playgroud)
我该如何安装Lifty?请注意,我是Scala,sbt和Lift的新手.
编辑
我设法通过降级到sbt0.7.7 来安装Lifty.但是如果我这样做的话
> lift create project-blank
> …Run Code Online (Sandbox Code Playgroud)