2010-08-27 23 views
1

Mon problème est l'extraction des attributs xhtml pour générer des liens absolus, car ils doivent être différents sur les tests et la production environnement. Je voudrais utiliser un "extrait global" qui lie tous les attributs "src" et "href" à "localhost: 8080" ou "www.mydomain.com" en fonction d'une valeur de conf .Lift Framework BindHelpers.attr Question (ou meilleure pratique?)

Voici comment le modèle ressemble à:

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

Et voici la méthode Global.render:

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

Mais dans la page rendu tout ce que je vois est ... href = » confValueNone ".

Qu'est-ce que je fais mal? Existe-t-il un meilleur moyen de configurer pour différents environnements?

Répondre

2

J'utilise AttributeSnippets maintenant. Ils sont un peu plus lourds sur le côté du gabarit, mais donnent des extraits plus nets.

extrait:

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 
} 
modèle

:

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