Вы можете определить фрагмент, который выбирает нужный шаблон, и передать ему xhtml NodeSeq, содержащий выбор шаблона:
<lift:TemplateSnippet.dynamicTemplatePicking>
<lift:surround dynamic:template="" at="content">
<h2>some heading</h2>
<p>some text</p>
</lift:surround>
</lift:TemplateSnippet.dynamicTemplatePicking>
И фрагмент кода:
class TemplateSnippet {
def dynamicTemplatePicking(xhtml :NodeSeq) :NodeSeq = {
bind("dynamic", xhtml, AttrBindParam("template", Text("default"), "with"))
}
}
Изменяя "default"
in Text("default")
внутри фрагмента, вы можете выбрать другой шаблон в зависимости от ваших потребностей. Может быть, вы хотите сделать что-то вроде def choose (record: Record) = record match { case b: Book => "booktemplate"}
и так далее ...
Источник: Сообщение Мэдса Хартманна