将文字保留在电梯片段中

时间:2010-12-09 23:15:16

标签: scala lift

有一个电梯摘录:

<lift:Login>
  <entry:name>
     No user logged in
  </entry:name>
</lift:Login>
我知道如果用户已登录,我可以Helpers.bind用户名,但是如何保留包含在其中的前一个文本?当我看到scala api时,似乎没有支持项目前缀元素,xhtml \\ "entry:name"只产生空节点。那么我怎样才能实现这个目标呢? 编辑: 如果用户登录,我想显示: User 123 在另一种情况下,我想在片段中显示原始文本,换句话说,我想删除对于框架必不可少的提升前缀标签,但它们与最终用户html无关: No user logged in

1 个答案:

答案 0 :(得分:0)

目前还不清楚你已经尝试了什么,但在大多数情况下,不需要Scala xml转换。使用Helpers.bind通常就足够了,可以正确处理xml前缀。 (Scala的xml转换API有时在这方面感觉有点不均匀。)

不是100%确定你想要做什么,但如果登录后我就会将用户名绑定到<entry:name/>,或者显示默认文本。

class Login {
  def render(xhtml: NodeSeq) = bind("entry", xhtml, "name" -> name _)
  def name(in: NodeSeq) = User.currentUser.map(_.shortName).map(Text(_)) openOr in
}

<强>加成"name" -> name _部分意味着应使用name标记的内容调用方法<entry:name>,结果应替换整个标记。 (我必须说,我不太确定你对升力的了解;我的印象是,如果一个人知道如何绑定User 123,那么也应该知道如何绑定其他信息......)

需要使用尾随下划线来帮助编译器。如果您不想对标记的原始内容进行转换,则只需绑定valdef someMethod: NodeSeq,然后使用它而不使用下划线甚至内联。例如。 bind("entry", xhtml, "name" -> <span>Some NodeSeq</span>)