Lift Framework BindHelpers.attr问题(还是更好的练习?)

时间:2010-08-27 09:48:48

标签: xml xhtml scala bind lift

我的问题是提取xhtml属性以生成绝对链接, 因为他们需要在测试和生产上有所不同 环境。 我想使用绑定所有“src”和“href”的“全局代码片段” 属于“localhost:8080”或“www.mydomain.com”的属性取决于a conf值。

这就是模板的样子:

<lift:Global>
  <html><body><a G:href="/somelink">some text</a></body></html>
</lift:Global>

这是Global.render方法:

bind("G",template,
  AttrBindParam("href",Conf.localhost
    +BindHelpers.attr("G","href").map(_.toString).getOrElse("none") ,"href")
)

但是在渲染的页面中,我看到的是...... href =“confValueNone”。

我做错了什么? 有没有更好的方法来配置不同的环境?

1 个答案:

答案 0 :(得分:2)

我现在使用AttributeSnippets。它们在模板方面有点重,但会产生更清晰的片段。

片段:

import xml.{UnprefixedAttribute, MetaData}

...

def src(in:MetaData):MetaData = {
  new UnprefixedAttribute("src",Conf.localhost+in.value.toString,scala.xml.Null)
}

def href(in:MetaData):MetaData = {
  val out = new UnprefixedAttribute("href",Conf.localhost+in.value.toString,scala.xml.Null)
  out
}

模板:

...
<script type="text/javascript" lift:Global.src="/inc/showdown.js" />
<link rel="stylesheet" type="text/css" lift:Global.href="/inc/style.css" />
...