在(Scala)Lift中,如何在使用Helpers.bind时从模板呈现原始HTML

时间:2010-12-18 14:34:08

标签: templates scala bind lift helpers

我是Scala / Lift的初学者,我在使用每个项目上的可选“标签”呈现列表时遇到问题。

我的HTML模板说

<lift:Items.list>
  <e:name>Rock</e:name><br />
  <e:warning><span style="color:#ff0000;">DANGER!</span></e:warning>
</lift:Items.list>

在Items.scala上我有

def list(node : NodeSeq) : NodeSeq = {

  getItems flatMap( it => {

     Helpers.bind("e", node,
                  "name" -> { Text(it.name) },
                  "warning" -> { 
                      if (it.isDangerous) { <<INSERT HTML FROM TEMPLATE>> } 
                      else { Text("") }
                         }
                  )
  })
}

在某些情况下,我希望逐字呈现“e:warning”标记的内容。我确信有一种简单的方法可以从“节点”中提取它们,但我想我的Lift知识有一些重大差距,因为我无法弄清楚如何。 如果有人能向我指出正确的程序,我会非常感激。


ANSWERED: 感谢您的建议。我最终构建了这样的代码:

    "warning" -> { (n : NodeSeq) => {
                  if (it.isDangerous) { n } else { Text("") }
                 }}

2 个答案:

答案 0 :(得分:1)

您可以简单地将函数绑定到节点的名称,该名称需要NodeSeq并返回NodeSeq

E.g:

def warning(in: NodeSeq): NodeSeq = doSomethingWith(in)

// ...

Helpers.bind("e", node, "warning" -> warning _)

然后将转换并插入<e:warning>节点的内容。

答案 1 :(得分:0)

我不确定你想要做什么的目的。如果要显示一个或另一个,请使用chooseTemplate和Box。