我试图调用两个具有相同名称和相同类的片段方法之一,但这些片段位于不同的包中。这是示例代码:
摘录1:
package v1.site.snippet
class TestSnippet {
def test = { println("printed from v1") }
}
摘录2:
package v2.site.snippet
class TestSnippet {
def test = { println("printed from v2") }
}
的index.html:
<div class="lift:TestSnippet.test"></div>
那么如何告诉index.html要调用哪个TestSnippet.test?这两个软件包都已添加到我的Boot.scala中。
答案 0 :(得分:3)
一个选项:
LiftRules.snippetDispatch.append {
case "V1TestSnippet" => new v1.site.snippet.TestSnippet
case "V2TestSnippet" => new v2.site.snippet.TestSnippet
}
然后,您的代码段必须继承DispatchSnippet并定义def dispatch = { case "test" => test _ }
等。然后,您可以从V1TestSnippet
或V2TestSnippet
调用模板中的代码段。
或者,类似
LiftRules.snippets.append {
case "V1TestSnippet"::"test"::Nil => (new v1.site.snippet.TestSnippet).test _
case "V2TestSnippet"::"test"::Nil => (new v2.site.snippet.TestSnippet).test _
}
我相信List是模板中分割点的片段名称。