2013-05-08 60 views
4

我想用相同的名称和类来调用2个片段方法之一,但这些片段位于不同的包中。下面是示例代码:如何在电梯中从不同的包中调用片段?

片段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 。测试呼叫?这两个软件包都已添加到我的Boot.scala中。

+0

你可以在你的代码包中包含子包,然后使用'/'来引用子包。我不知道如何区分你的情况。 – gzm0 2013-05-08 19:56:29

+0

我希望能够在片段调用中做出区分,如下所示:

但这不起作用。 – DorkRawk 2013-05-08 20:17:16

+1

您可以将程序包根目录添加为片段包,然后执行:'

'。但它有点丑陋。 – gzm0 2013-05-08 21:15:09

回答

3

一个选项:然后

LiftRules.snippetDispatch.append { 
    case "V1TestSnippet" => new v1.site.snippet.TestSnippet 
    case "V2TestSnippet" => new v2.site.snippet.TestSnippet 
} 

你片断必须继承DispatchSnippet和定义def dispatch = { case "test" => test _ }等。然后,从模板调用的代码段V1TestSnippetV2TestSnippet

另外,像

LiftRules.snippets.append { 
    case "V1TestSnippet"::"test"::Nil => (new v1.site.snippet.TestSnippet).test _ 
    case "V2TestSnippet"::"test"::Nil => (new v2.site.snippet.TestSnippet).test _ 
} 

我相信这份名单是在点模板拆分片断名。

相关问题