什么是将Box [Elem]转换为LiftResponse的升降方式?

时间:2012-02-02 12:10:13

标签: scala lift

我已经多次遇到过这个问题了,我想知道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>
      }
    )
  }
}

1 个答案:

答案 0 :(得分:1)

我认为缺少implicit声明。您可以通过混合周围班级中的implicit def canNodeToResponse(in: Box[Seq[Node]]): LiftResponse trait来隐含(XMLApiHelper范围。