2011-02-14 40 views
2

我正在嘗試使用CSS Selector Transforms通過一些Lift示例。我試圖這種轉變:value%不是scala.xml的成員。NodeSeq

  • NodeSeq => NodeSeq - 即變換節點的功能(是的,它可以是一個CssBindFunc):"#name" #> ((n: NodeSeq) => n % ("class" -> "dog")) // <span id="name"/> -> <span id="name" class="dog"/>

這是%那現在給我帶來了麻煩。當我嘗試編寫這樣的代碼時,出現錯誤value % is not a member of scala.xml.NodeSeq。有沒有導入或我失蹤的東西?

這裏是我的片斷:

import scala.xml._ 
import net.liftweb.util.Helpers._ 

import model.User 

class Users { 
    def show = { 
    ".userName" #> "name replaced" & 
    ".userEmail" #> "email replaced" & 
    ".changePassword" #> ((n: NodeSeq) => n % ("href" -> "changePassword")) 
    } 
} 

回答

5

只有Elem包含%方法。 NodeSeq不是Elem,而是Node的集合,其可以是也可以不是Elem。而且我不知道,如果電梯的助手包括implicits創建MetaData,但如果沒有,你需要像

myNodeSeq map { 
    case e: Elem => e % new UnprefixedAttribute("href","changePassword",xml.Null) 
    case x => x 
} 

覆蓋一般情況下。

0

這裏是做你想做的事。這幾乎相當,但它不會拋出任何錯誤。

import scala.xml._ 
import net.liftweb.util.Helpers._ 
scala> val res1 = "#name" #> ((n:NodeSeq) => ("* [class]" #> "dog")(n)) 
res1: net.liftweb.util.CssSel = CssBind(Full(#name), Full(IdSelector(name,Empty))) 
scala> res1(<span id="name"/>) 
res2: scala.xml.NodeSeq = NodeSeq(<span id="name" class="dog"></span>) 
相關問題