1
好的,所以我有一个myUser自定义对象。斯卡拉 - 电梯 - 映射一个自定义盒装对象绑定?
MYUSER看起来是这样的:
username:String = ""
firstname:String = ""
lastname:String = ""
我有进入一个页面,这些用户的列表,我做了一个链接,查看各个用户的详细信息。当你点击一个用户时,它将填充我作为请求var的盒装对象,然后直接到详细信息页面查看此用户信息。为什么我不能从这个对象上的地图绑定?下面是一些代码...
private object selectedUser extends RequestVar[Box[myUser]](Empty)
def getusers(html: NodeSeq):NodeSeq = {
//This gets me a list of 10 users that are "myUser" objects
val userList = User.getUsers(10)
userList.flatMap{user => bind("user", html,
"username" -> SHtml.link("/%2Fadmin%2Fdetail",() => selectedUser(Full(user)), Text(user.username)),
"firstname" -> {user.firstname},
"lastname" -> {user.lastname},
"lastloggedin" -> {user.lastloggedin})}
}
现在,当我在用户详细信息页面时,我想绘制出我写的selectedUser对象....但出于某种原因,我不能让它的工作,它给我这个错误:
类型不匹配;发现: net.liftweb.common.Box [scala.xml.NodeSeq] 要求:scala.xml.NodeSeq
这里是一个真实给我这个错误代码:
def userdetail(html: NodeSeq):NodeSeq = {
selectedUser.is.map{user => bind("user", html,
"username" -> {user.username},
"firstname" -> {user.firstname},
"lastname" -> {user.lastname},
"lastloggedin" -> {user.lastloggedin})}
}
有趣事情是,我可以这样做,它会起作用,但是必须有一种方法可以在一条线上完成吗?
这工作...但它很麻烦:
def userdetail(html: NodeSeq):NodeSeq = {
var username = ""
var firstname = ""
var lastname = ""
var lastloggedin = ""
bind("user", html,
"username" -> {username},
"firstname" -> {firstname},
"lastname" -> {lastname},
"lastloggedin" -> {lastloggedin})
}
是否有人可以告诉我小东西我缺少在这里吗?我希望我能够清楚地解释自己。
谢谢!
就是这样,我知道这是我想念的东西。你真棒! :) –
是的,'aList.flatMap(item => bind(...))'是关键! – pr1001