标签: lift

如何在Scala/Lift中以惯用方式处理空值检查?

即使Box和Option monad普遍存在,我们仍然需要在这里和那里检查空值.到目前为止,我提出的最好的方法是使用Box#!! 方法:

(Box !! possiblyNull).map(_.toString).openOr("")
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?我尝试使用Box的apply方法:

Box(possiblyNull).map(_.toString).openOr("")
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨对重载定义的模糊引用,特别是:

[InType,OutType](value: InType)
(pf: PartialFunction[InType,OutType])net.liftweb.common.Box[OutType]
Run Code Online (Sandbox Code Playgroud)

我不确定为什么会发生这种情况,但我希望有一种更简洁,更简洁的方式来说"给我这个字符串的价值,或者只是".我正在考虑使用tryo,但认为这很浪费可以避免的例外情况.

scala lift scala-2.8

7
推荐指数
1
解决办法
3597
查看次数

如何将Array [Node]转换为NodeSeq?

我正在尝试将Lift应用程序集成到一些现有的Java代码中.在我的一个片段中,我有一个Java对象Array,我需要将它映射到NodeSeq.我可以获得一个节点数组,但不能获得NodeSeq.(至少,不是以非常实用的方式).

import scala.xml.NodeSeq

// pretend this is code I can't do anything about
val data = Array("one", "two", "three")

// this is the function I need to write
def foo: NodeSeq = data.map { s => <x>{s}</x> }
//                          ^
// error: type mismatch;
//  found   : Array[scala.xml.Elem]
//  required: scala.xml.NodeSeq
Run Code Online (Sandbox Code Playgroud)

最干净的方法是什么?

scala lift scala-2.8

7
推荐指数
2
解决办法
4068
查看次数

提升入门,使用数据库构建动态站点

所以我一直在互联网上寻找有关数据库的电梯如何工作的一个很好的解释.我还没有找到任何非常有用的东西.我正在寻找的是一个简单的解释或代码示例,可以显示lift如何连接到其数据库以执行事务以及如何使用它来创建新表,模型或更新和编辑现有表.

例如:使用django,我很容易弄清楚它是如何从模型类生成数据库表并通过它从框架继承的方法对它们执行更新的.

我正在尝试创建一个简单的应用程序,其中包括用户,有关他们的信息,网站上的帖子等.

我目前正在阅读可用的升降机书籍,非常感谢您学习如何使用升降机的更多帮助.

database scala lift

7
推荐指数
1
解决办法
1829
查看次数

如何在Lift项目中组织Scala代码?

经过1.5年多的Ruby和Rails编程,我终于开始研究Scala和Lift中的一个新项目.基本上我正在尝试编写一个API来访问来自庞大数据库(数百万行)的信息.Lift应该帮助我编写这个项目的前端(API部分).但现在,这还涉及一个模块,该模块将从压缩的ZIP XML文件中读取,以便最初使用行填充数据库.该模块需要在3个月内运行一次.

我应该在哪里放置这个模块代码?或者更确切地说,我应该如何组织我的Lift和Scala代码?后台进程在哪里?欢迎提出这方面的任何指示.

scala lift

7
推荐指数
1
解决办法
1379
查看次数

IntelliJ IDEA不从SBT项目加载Lift库

sbt使用最基本的指南创建了一个空白项目,具体来说:

> cd xyz
> sbt # here we create a new project w/ Scala 2.8.1
> *lift is org.lifty lifty 1.6.1
> lift create project-blank
Run Code Online (Sandbox Code Playgroud)

但是当我在IntelliJ中打开项目时,它无法正确识别通过sbt下载的.jars.所有进口都是红色的

红色进口

当我进入库部分的项目设置(Ctrl+ Alt+ Shift+ S)时,它们都是灰色的.

灰色图书馆

除此之外,项目源被正确识别为具有Web构面的Scala项目

项目结构

我忘记配置了什么吗?我已经尝试使用本指南通过maven创建一个项目 ,但我更喜欢使用SBT而不是maven.

scala lift intellij-idea sbt

7
推荐指数
1
解决办法
1212
查看次数

lift-json操纵 - 添加到正确的位置

考虑以下json:

{
  "type":"A1",
  "system":{
    "path":"/example.org/FooBar",
    "lastModified":"2013-10-01T12:00:00Z"
  },
  "fields":{
    "foo1":["bar1"],
    "foo2":["bar2"],
    "foo3":["bar3"]
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,使用lift-json,我想将此json更改为:

{
  "type":"A1",
  "system":{
    "path":"/example.org/FooBar",
    "lastModified":"2013-10-01T12:00:00Z"
  },
  "fields":{
    "foo1":["bar1"],
    "foo2":["bar2"],
    "foo3":["bar3"]
  },
  "injected":{
    "bar1":"foo1",
    "bar2":"foo2"
  }
}
Run Code Online (Sandbox Code Playgroud)

所以,我尝试了以下内容:

scala> val json = parse("""
     |{
     |  "type":"A1",
     |  "system":{
     |    "path":"/example.org/FooBar",
     |    "lastModified":"2013-10-01T12:00:00Z"
     |  },
     |  "fields":{
     |    "foo1":["bar1"],
     |    "foo2":["bar2"],
     |    "foo3":["bar3"]
     |  }
     |}""")

json: net.liftweb.json.JValue = JObject(List(JField(type,JString(A1)), JField(system,JObject(List(JField(path,JString(/example.org/FooBar)), JField(lastModified,JString(2013-10-01T12:00:00Z))))), JField(fields,JObject(List(JField(foo1,JArray(List(JString(bar1)))), JField(foo2,JArray(List(JString(bar2)))), JField(foo3,JArray(List(JString(bar3)))))))))

scala> json transform{case JObject(l) => JObject(l ::: List(JField("injected", ("bar1" -> "foo1") ~ ("bar2" …
Run Code Online (Sandbox Code Playgroud)

json scala lift lift-json

7
推荐指数
1
解决办法
1504
查看次数

Scala和Java在同一个项目中

我可以在同一个项目中使用Scala和Java吗?我是编程新手,所以这对我来说有点混乱.

从我的研究中我已经读到,获得一个好项目的最佳组合是Java/Spring或Scala/Lift的组合.为什么存在这些组合?是不是可以使用Scala with Spring或Java with Lift?

如果我使用Scala,我应该在Scala代码中拥有整个配置吗?或者我可以拥有外部资源,因此每次Scala代码都不应该修改.

java spring scala lift

7
推荐指数
2
解决办法
3600
查看次数

Scala lift框架,提交多个值的ajax表单?

我刚刚开始使用lift,我现在正在尝试将普通表单更改为ajax表单,但该方法processEntryAdd永远不会被调用.

def addUser(xhtml : Group) : NodeSeq = {

    var firstName = ""
    var lastName = ""

    def processEntryAdd() {
        Log.info("processEntryAdd: " + firstName + ", " + lastName)
    }

    SHtml.ajaxForm(
        bind("entry", xhtml,
             "firstName" -> SHtml.text(firstName, 
                 (x) => {
                     Log.info("Setting firstName to " + x); 
                     firstName = x
                 }),
             "lastName" -> SHtml.text(lastName, 
                 (x) => {
                     Log.info("Setting lastName to " + x); 
                     lastName = x
                 }),
             "submit" -> SHtml.submit("Add user", processEntryAdd),
        ))
}
Run Code Online (Sandbox Code Playgroud)

任何想法如何实现我想要做的,或为什么上面的代码不起作用.按下按钮时会提交两个表单字段的值,firstName并且lastName设置了两个局部变量,但未调用与SHtml.submit关联的函数.

谢谢!

ajax scala lift ajax-forms

6
推荐指数
2
解决办法
3915
查看次数

提升与他人

任何人都有升力的经验,以及它与更广泛使用的框架如rails和django相比如何?

scala lift

6
推荐指数
1
解决办法
2319
查看次数

部署自动化

我有一个Lift应用程序打包为WAR存档,必须在Jetty下部署.但是,我希望能够自动执行一些任务:

  • 指定目标服务器(或服务器集合).我有多个服务器,从开发到测试和生产服务器,我希望能够轻松地控制部署的目的地.
  • 目的地(例如,开发)可以表示服务器的集合,用于负载平衡目的.
  • 测试阶段.基本上,在每个部署中,如果应用程序无法编译或者一个或多个测试失败,我希望运行整个测试集并阻止部署.
  • WAR存档必须在Jetty上部署,再次在一台或多台运行Linux的Amazon EC2机器上部署.(Ubuntu 12.10)

我正在使用SBT,我不知道这将与Puppet或类似的东西有多好.你会怎么做?

deployment scala jetty lift puppet

6
推荐指数
1
解决办法
1998
查看次数

标签 统计

lift ×10

scala ×10

scala-2.8 ×2

ajax ×1

ajax-forms ×1

database ×1

deployment ×1

intellij-idea ×1

java ×1

jetty ×1

json ×1

lift-json ×1

puppet ×1

sbt ×1

spring ×1