Lift Framework BindHelpers.attr Вопрос (или лучшая практика?) - PullRequest
1 голос
/ 27 августа 2010

Моя проблема заключается в извлечении атрибутов xhtml для генерации абсолютных ссылок, так как они должны отличаться при тестировании и производстве среда. Я хотел бы использовать «глобальный фрагмент», который связывает все «src» и «href» атрибуты "localhost: 8080" или "www.mydomain.com" в зависимости от значение 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 Ответ

2 голосов
/ 27 августа 2010

Я сейчас использую 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" />
...
...