我已经多次遇到过这个问题了,我想知道Lift-way是如何执行这样的动作的。当然我可以做自己的错误处理等但基本上我想知道如何将Box [Elem]变成LiftResponse。理想情况下,当然是XmlResponse。
场景是我使用RestHelper作为API,我有一个函数返回一个Box [Elem]。我想利用异步支持。
我得到的错误是Box [Elem](或Box [NodeSeq],Box [Node])无法转换为LiftResponse。但是,使用完全相同的代码而不使用RestContinuation。
注意:我不希望Lift执行任何模板处理逻辑。只需输出XML就像不使用RestContinuation时那样。
val userId = S.param("userId") map { _.toInt }
RestContinuation.async {
reply => {
reply(
for {
user <- userRepo.select(userId) ?~ "No such user." ~> 404
} yield {
<user>
<name>{user.name}</name>
</user>
}
)
}
}
答案 0 :(得分:1)
我认为缺少implicit
声明。您可以通过混合周围班级中的implicit def canNodeToResponse(in: Box[Seq[Node]]): LiftResponse
trait
来隐含(XMLApiHelper
范围。