Boot.scala在电梯里

时间:2009-10-08 15:48:57

标签: scala lift

我正在尝试修改电梯中的boot.scala并遇到一个有趣的错误。这就是我目前所拥有的:

val entries = Menu(Loc("Home", List("index"), "Home")) ::
    Menu(Loc("StudentLogin", List("studentlogin"), "Student Login"))  ::
    Menu(Loc("ProviderLogin", List("providerlogin"), "Provider Login")) 

    LiftRules.setSiteMap(SiteMap(entries :_*))

我收到此错误:

  

Boot.scala:29:错误:值::不是   net.liftweb.sitemap.Menu的成员       菜单(Loc(“StudentLogin”,列表(“studentlogin”),“学生   登录“))::

关于我可能做错什么的任何想法?

感谢。

3 个答案:

答案 0 :(得分:7)

看起来你正在尝试使用cons构建一个列表,但最后没有空列表。试试这个

val entries = Menu(Loc("Home", List("index"), "Home")) ::
Menu(Loc("StudentLogin", List("studentlogin"), "Student Login"))  ::
Menu(Loc("ProviderLogin", List("providerlogin"), "Provider Login")) :: 
Nil

LiftRules.setSiteMap(SiteMap(entries :_*))

答案 1 :(得分:6)

请同时查看SiteMap维基页面:http://liftweb.assembla.com/wiki/show/liftweb/SiteMap

新的和改进的SiteMap语法是:

def siteMap() = SiteMap(
  Menu(S ? "Home") / "index",
  Menu(S ? "About") / "about" / "index" submenus (
    Menu(S ? "Management") / "about" / "management",
    Menu(S ? "Goals") / "about" / "goals"),
  Menu("directions", S ? "Directions") / "directions" >> Hidden,
  Menu(S ? "Admin") / "admin" / "index" >> If(loggedIn_?, "You must be logged in"))

答案 2 :(得分:1)

不使用::运算符可能更具可读性:

val entries = List(Menu(Loc("Home", 
                        List("index"), "Home")),
                   Menu(Loc("StudentLogin", 
                        List("studentlogin"), "Student Login")),
                   Menu(Loc("ProviderLogin", 
                        List("providerlogin"), "Provider Login")))