菜单剖析

时间:2013-12-10 00:47:34

标签: scala lift

我正在尝试了解基本Lift 2.5项目的工作原理。我正在使用lift_basic应用程序模板,并查看SimplyLift教程。按照教程我发现大多数事情看起来都很好,但我很难理解为什么。特别是:

Menu.i("Home") / "index" >> User.AddUserMenusAfter

当我查看Lift API for Menu时,i没有列出任何函数Menu,也没有列出似乎定义/的任何函数。 (这可能是指String上的一个函数,但API似乎只引用/作为后续令牌的操作;我不确定i是否产生一个字符串。)我的基本问题是;我如何确定i()正在做什么,这两者都在具体的(在此过程中Menu做什么)和一般(当我遇到一个非常明显的工作函数时)在API中提到过?

顺便说一句,我目前正在使用Eclipse作为我的IDE,其中sbt构建实际上是在本地编译和加载webapp。 Eclipse似乎没有很好地推断出哪些对象/函数意味着什么,因为构建路径不包含Lift库 - 它们由sbt加载。是否有可能让Eclipse知道这些,而不会污染仓库并在两个地方维护库配置?

2 个答案:

答案 0 :(得分:2)

i在伴侣对象中定义,而不是在实际的类中定义。您可以在此处Menu.iscaladoc

中查看来源中的定义
/**
 * A convenient way to define a Menu item that has the same name as its localized LinkText.
 * <pre>Menu.i("Home") / "index"</pre> is short-hand for <pre>Menu("Home", S.loc("Home", Text("Home")) / "index"</pre>
 */

def i(nameAndLink: String): PreMenu = Menu.apply(nameAndLink, S.loc(nameAndLink, scala.xml.Text(nameAndLink)))

/被定义为PreMenu的一部分,它允许您指定菜单位置的投放位置。

如果你正在使用eclipse,你可以试试sbteclipse插件,这应该有助于让eclipse知道你的依赖。

答案 1 :(得分:1)

关于第二个问题。您是否使用SBT生成项目结构?以下是完整信息:https://github.com/typesafehub/sbteclipse/

简而言之,我将从文件夹中删除任何已创建的内容并启动eclipse with-source=true之后“将项目导入eclipse并看到它正常工作。”