Как Lift-способ конвертировать Box [Elem] в LiftResponse? - PullRequest
0 голосов
/ 02 февраля 2012

Я уже сталкивался с этой проблемой уже пару раз, и мне интересно, что такое Лифт-способ для выполнения такого действия. Конечно, я мог бы делать свою собственную обработку ошибок и т.д., но в основном мне интересно, как я могу превратить 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 Ответ

1 голос
/ 02 февраля 2012

Я думаю, что пропущено объявление implicit. Вы можете внести это неявное (implicit def canNodeToResponse(in: Box[Seq[Node]]): LiftResponse в область видимости, добавив trait XMLApiHelper в окружающий класс.

...