Lift Framework BindHelpers.attr 问题(或更好的实践?)

发布于 2024-09-15 22:18:23 字数 592 浏览 8 评论 0原文

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

这就是模板的样子:

<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"。

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

My problem is extracting xhtml attributes to generate absolute links,
since they need to be different on testing and production
environment.
I would like to use a "global snippet" that binds all "src" and "href"
attributes to "localhost:8080" or "www.mydomain.com" depending on a
conf value.

This is how the template looks like:

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

And this is the Global.render method:

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

But in the rendered page all I see is ... href="confValueNone".

What am I doing wrong?
Is there a better way to configure for different environments?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瀟灑尐姊 2024-09-22 22:18:23

我现在使用 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" />
...

I use AttributeSnippets now. They are a bit heavier on the template side, but result in cleaner snippets.

snippet:

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
}

template:

...
<script type="text/javascript" lift:Global.src="/inc/showdown.js" />
<link rel="stylesheet" type="text/css" lift:Global.href="/inc/style.css" />
...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文