0
我偶然發現了這個問題,我想知道Lift-way是如何執行這樣的操作的。當然,我可以做我自己的錯誤處理等,但基本上我想知道如何將Box [Elem]變成LiftResponse。理想情況下是XmlResponse當然。將Box [Elem]轉換爲LiftResponse的提升方式是什麼?
這種情況是,我正在使用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>
}
)
}
}
我所缺少的是這個「對象創建不可能,因爲createTag類型的特性XMLApiHelper中的方法createTag(in:scala.xml .NodeSeq)scala.xml.Elem沒有被定義「我應該爲createTag使用什麼?爲什麼它在那裏,爲什麼每個響應都包含它? – 2012-02-02 15:13:47
'createTag'用於指定XML api的根標記。你通常會把'NodeSeq'包裝在其他標籤中:'def createTag(in:NodeSeq)= {in} '。 –
Debilski
2012-02-02 15:36:19
好吧,那不是我要找的。沒有 {in} 圍繞所有的標籤,所以有一個選項可以獲得與RestHelper一樣的行爲w這可以例如處理JSON和Xml? –
2012-02-02 15:54:38