请教一个Lift菜单的问题

yangzhan 2009-12-23
如果页面在webapp下,直接用Menu(Loc("Home", List("index"), "Home"))就可以了,但如果菜单不在webapp下,要怎么用呢?或讲解下siteMap的用法,多谢!
night_stalker 2009-12-23
.html 文件不在 siteMap 声明就不能访问,但是 .css 和 .js 和图片没关系。

如果要添加位置 webapp/post/show.html,可以这样用:
Menu(Loc("post-show", List("post", "show"), "post-show"))

对应的路径看中间:就是 http://localhost:8080/post/show
其实第一个和最后一个参数很少会用到(我都忘了都是什么了,随便填个"post-show"吧),保证 Menu 之间互不相同比较好 ……

可以定义个辅助函数方便批量添加:(函数内定义函数 is OK)
// 添加 dir 下面一系列的 template
def locs(dir: String, filelist: List[String]) = filelist map {file =>
  val name = dir + "-" + file
  Menu(Loc(name, List(dir, file), name))
}
// 假设 post/ 下面有 show.html, new.html, index.html
// 假设 group/ 下面有 mars.html, mercury.html
LiftRules.setSiteMap(
  locs("post", List("show", "new", "index")) ++
  locs("group", List("mars", "mercury"))
)


ps:那个自动生成的导航菜单灰常不好用,建议自己写个 ……
更多可参考 LiftWiki 和 github.com/dpp/liftweb 上的 wiki(讲得很详细)
还可以到 http://scala-tools.org/mvnsites/ 看 API 和源代码
yangzhan 2009-12-24
多谢多谢!
昨晚试了个 List("post/show") 怎么都不成功。原来要分开写。
Global site tag (gtag.js) - Google Analytics