2013-05-08 46 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 _ 
} 

我相信這份名單是在點模板拆分片斷名。

相關問題