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") }

}

索引.html:

<div class="lift:TestSnippet.test"></div>

那么我如何告诉 index.html 调用哪个 TestSnippet.test 呢?这两个包都已添加到我的 Boot.scala 中。

4

1 回答 1

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 _
}

我相信 List 是模板中按点拆分的片段名称。

于 2013-05-09T06:46:14.010 回答