我正在尝试了解基本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知道这些,而不会污染仓库并在两个地方维护库配置?
答案 0 :(得分:2)
i
在伴侣对象中定义,而不是在实际的类中定义。您可以在此处Menu.i
或scaladoc:
/**
* 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并看到它正常工作。”