我正在尝试使用Lift处理一些CSS Selector Transforms示例。我正在尝试这种转变:
- 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"))
}
}
答案 0 :(得分:5)
只有Elem
包含%
方法。 NodeSeq
不是Elem
,而是Node
的集合,可能是也可能不是Elem
。而且我不确定Lift的助手是否包含创建MetaData
的暗示,但如果没有,你需要像
myNodeSeq map {
case e: Elem => e % new UnprefixedAttribute("href","changePassword",xml.Null)
case x => x
}
涵盖一般情况。
答案 1 :(得分: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>)