Scala代码:
import net.liftweb.json._
case class Province(id: String, name: String, parentName: Option[String], parentId: Option[String])
case class ProvinceJson(provinceData: List[Province])
object Test extends Application {
val json = """ {
| "provinceData":
| [
| {
| "name":"hb",
| "parentName":null,
| "parentId":null,
| "id":"450"
| }
| ]
|}
| """.stripMargin
parse(json).extract[ProvinceJson]
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,它报告编译错误:
could not find implicit value for parameter formats: net.liftweb.json.Formats
parse(json).extract[ProvinceJson]
^
not enough arguments for method extract: (implicit formats: net.liftweb.json.Formats, implicit mf: scala.reflect.Manifest[com.thoughtworks.sfexpress.sf_ws.ProvinceJson])com.thoughtworks.sfexpress.sf_ws.ProvinceJson.
Unspecified value parameters formats, mf.
parse(json).extract[ProvinceJson] …Run Code Online (Sandbox Code Playgroud) 是否有一个简洁的示例,说明如何上传图像,调整图像大小,将其存储在数据库中,然后使用Lift提供图像?
我确信我可以从文件上传,Java 2D API,Lift Mapper和Response API中将它拼凑在一起.但有没有我可以遵循的示例代码,以"正确"或推荐的方式?
我正在寻找为Lift Web框架编写的开源应用程序.我想阅读他们的代码,并从中学习最好的Lift-ish编码风格.
有谁知道开源的Web应用程序?
我正在尝试使用Lift框架反序列化JSON文本,并且它们似乎不支持Seq特征(尽管支持List).举个例子...
一些代表员工的JSON数据(名字和姓氏)......
{"employees":[{"fname":"Bob","lname":"Hope"},{"fname":"Bob","lname":"Smith"}]}
Run Code Online (Sandbox Code Playgroud)
这是员工域对象:
case class Employee(fname: String, lname: String) { }
case class Employees(employees: Seq[Employee]) { }
Run Code Online (Sandbox Code Playgroud)
这是我的JSON反序列化代码......
class EmployeeTest {
@Test def test() {
val jsonText: String = ....
val e = deserialize(jsonText)
}
def deserialize(in: String): Employees = {
implicit val formats = net.liftweb.json.DefaultFormats
net.liftweb.json.Serialization.read[Employees](in)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将Employees域对象更改为使用List而不是Seq,那么它可以工作.但是如果可以的话,我真的很想使用Seq.
这是我在运行上面的代码时看到的异常(使用Seq):我能做些什么来让它工作吗?谢谢你的帮助!
net.liftweb.json.MappingException: unknown error
at net.liftweb.json.Extraction$.extract(Extraction.scala:43)
at net.liftweb.json.JsonAST$JValue.extract(JsonAST.scala:288)
at net.liftweb.json.Serialization$.read(Serialization.scala:50)
at EmployeeTest.deserialize(EmployeeTest.scala:20)
at EmployeeTest.test(EmployeeTest.scala:13)
Caused by: java.lang.UnsupportedOperationException: tail of empty list
at scala.collection.immutable.Nil$.tail(List.scala:388)
at scala.collection.immutable.Nil$.tail(List.scala:383)
at net.liftweb.json.Meta$Constructor.bestMatching(Meta.scala:60)
at net.liftweb.json.Extraction$.findBestConstructor$1(Extraction.scala:187) …Run Code Online (Sandbox Code Playgroud) 我正在使用Scala和Lift框架开发Web应用程序.我在DB中有记录,其中包含页面的html perex
<b>Hi all, this is perex</b>
Run Code Online (Sandbox Code Playgroud)
在一个场景中,我需要打印用户perex,但没有html标签.
Hi all, this is perex
Run Code Online (Sandbox Code Playgroud)
可以在Scala中执行此操作吗?因为我试图与谷歌一起看,但没有成功.
感谢所有回复.
我有一个案例课
case class Doc(title:String, ....)
Run Code Online (Sandbox Code Playgroud)
我想转换为lift-json JObject所以我可以更容易地使用JObject方法合并等.
当我开始使用Lift时,我有点惊讶它使用反射(或似乎),它在静态类型的函数语言中有点出乎意料.我对JSP的经验与此类似.
我对Web开发很新,所以我真的不知道这些工具是如何工作的,但我想知道,
Web开发的哪些方面鼓励使用反射?
是否有任何工具(在静态类型语言中)处理(1)引用模板页面中的代码(2)对象关系映射,以不使用反射的方式?
对于一个旨在帮助人们学习Scala的社区资源的小型教育项目,我正在寻找一种在后台线程中提供和处理网页的简单方法.
最小背景:Scalatron是一款多人游戏,其中玩家将机器人程序(用Scala编写)相互对立.它伴随着一步一步的Scala教程.目前,玩家需要在他们的本地机器上使用IDE来编译机器人,然后通过将机器人复制到共享网络目录中将其发布到游戏中.这很麻烦.对于下一个版本,最好提供基于浏览器的机器人编辑和发布,以最大限度地简化组织者和玩家的设置.
我已经有了一个后台线程工作,它将编译即时到达服务器的Scala源代码(无需完整的IDE).接下来,我必须运行一个小型的Web服务器,为玩家提供一个接入点,并处理机器人上传(这可以摆脱网络共享).
要求是非常基本的:最初我设想用一个编辑框和一个"开始"按钮服务一个页面(=上传到服务器,编译并发布到游戏中); 我希望每隔5或10秒钟,所有用户上传不超过一个机器人的并发用户不超过20个; 我需要为每个用户保持最小状态(只是一个名字),我需要向用户返回编译器错误消息.请注意,游戏屏幕更新不会显示在浏览器中,而是显示在连接到服务器计算机的投影仪上.主要是为了允许最简单的设置(双击游戏服务器.jar)我认为在现有游戏服务器中的后台线程中运行Web服务器会很不错.
最合适的方法是什么?我应该使用一些现有的框架,比如Play或Lift吗?是否存在执行与此类似的操作的代码?计划在这样的后台线程中运行Web服务器是否合理?任何建议表示赞赏.
我正在使用sbt控制台来调试一些使用Lift Framework编写的Web应用程序.
每次运行它时,我都会运行一些命令来初始化框架.
import bootstrap.liftweb.Boot
(new Boot).boot
import ...some frequently used models from my app...
Run Code Online (Sandbox Code Playgroud)
我希望每次启动它时都要做这个样板.
这该怎么做?
所以我在过去的11个小时里试图让最简单的Scala/Lift应用程序通过Eclipse在Tomcat上运行.显然没有人试图这样做,或者这是世界上最简单的事情,所以没有人记录他们是如何做到的.使用maven原型创建代码并使用mvn tomcat运行它:运行没问题.通过Eclipse完成所有工作是另一回事.我会说这是我第一次尝试在Eclipse中使用Maven做任何事都没有帮助.我试过m2eclipse和eclipse-IAM.如果有人能够从头到尾指导我完成整个过程,或者将我指向可以的资源,那就太棒了.谢谢.
Scala 2.8带升降机2.1
如果我使用Scala 2.8和Lift 2.1(?)与eclipse 3.5.2,scala-ide和eclipse-iam,我的pom.xml文件告诉我:
错误:解析'org.scala-tools:maven-scala-plugin'版本时出错:插件需要Maven版本2.2.1
我使用这个原型定义从Maven项目创建向导创建了项目:
<archetype>
<groupId>net.liftweb</groupId>
<artifactId>lift-archetype-blank_2.8.0</artifactId>
<version>2.1-SNAPSHOT</version>
<repository>http://scala-tools.org/repo-snapshots</repository>
<description>Shawn's Custom Thinger</description>
</archetype>
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这里的问题是从2.1-SNAPSHOT创建的pom.xml文件需要Maven 2.2.1,但是eclipse-iam还没有使用该版本.我还没有设法找到一种方法来使用我自己安装的Maven v2.2.1.据说eclipse-iam不允许使用外部maven安装.
其他尝试
我尝试用这个原型构建项目:
<archetype>
<groupId>net.liftweb</groupId>
<artifactId>lift-archetype-jpa-blank</artifactId>
<version>1.1-SNAPSHOT</version>
<repository>http://scala-tools.org/repo-snapshots</repository>
<description>Archetype - blank JPA project for Lift</description>
</archetype>
Run Code Online (Sandbox Code Playgroud)
但是,我从Tomcat获取运行时错误,因为我的bootstrap.liftweb.Boot类有ClassNotFound错误.但是,我可以看到maven为我创建了一个默认的Boot类.
m2eclipse的
我使用m2eclipse得到了一个没有错误的项目,但是我遇到了在Tomcat上部署它的问题.我打算重新考虑这个,因为我很好奇,如果我确实设法使一个项目工作,但在我尝试它时在URL中有一个区分大小写的问题.但是,这个过程更加手动.如果可能的话,我更喜欢eclipse-iam解决方案,但是我会在这一点上采取我所能得到的解决方案.
lift ×10
scala ×10
json ×3
eclipse ×1
file-upload ×1
image ×1
java-2d ×1
list ×1
maven-2 ×1
open-source ×1
parsing ×1
reflection ×1
sbt ×1
seq ×1
string ×1
strip-tags ×1
tomcat ×1
webserver ×1