РЕДАКТИРОВАТЬ: я только что понял, что моя проблема не в том, что пример не работает! Это то, что страница не появляется в меню! Плюс, как я могу обработать страницу без параметров?
Мне трудно найти общее определение Menu.param. Есть пример в Simply Lift и несколько ссылок на код на этом форуме, но эта функция важна и, насколько я могу судить, не очень хорошо документирована.
Сейчас у меня проблема с картой сайта. Все, что я объявляю в sitema Boot.scala и код кажется принятым, но затем игнорируется. localhost: 8080 / journal ведет к 404, а пункт меню «Автобиография» не отображается в карте сайта.
Итак, с одной стороны, этот пост - призыв к помощи по этому коду. Почему это игнорируется? (Опять же, он компилируется и выполняется без ошибок.)
С другой стороны, это только я или "парам" недокументирован вне примеров Дэвида Поллака? Его нет в API: http://main.scala -tools.org / mvnsites / liftweb-2.0 / framework / scaladocs / net / liftweb / sitemap / Menu $ object. Html.
Спасибо.
Это моя карта сайта. Я добавил пример Param из Simply Lift, чтобы посмотреть, работает ли он. Это не так.
def sitemap = SiteMap(
Menu.i("Home") / "index" >> User.AddUserMenusAfter, // the simple way to declare a menu
Menu.i("Artifact") / "artifact", // Works
// Menu.i("Autobiography") / "journal", // Works if I comment out the next line.
AutobiographyPageMenu.menu,
Menu.param[AutobiographyPage]("Autobiography2", "Autobiography2", // Similar code as previous line. Doesn't work.
pageName => Full(AutobiographyPage(pageName)),
ap => ap.pageName) / "journal2",
Param.menu, // Added to see if D. Pollack's code would work. It didn't.
// more complex because this menu allows anything in the
// /static path to be visible
Menu(Loc("Static", Link(List("static"), true, "/static/index"),
"Static Content")))
Это код, к которому он относится, из файла в субпакете фрагмента. Лифт может найти классы: он не жалуется на то, что они не определены.
case class AutobiographyPage(pageName: String)
object AutobiographyPageMenu {
val menu = Menu.param[AutobiographyPage]("Autobiography", "Autobiography",
pageName => Full(AutobiographyPage(pageName)),
ap => ap.pageName) / "journal"
// I'm not sure what these two lines are for...
lazy val loc = menu.toLoc
def render = "*" #> loc.currentValue.map(_.pageName)
}
// This code is copied from the Simply Lift book:
// capture the page parameter information
case class ParamInfo(theParam: String)
// a snippet that takes the page parameter information
class ShowParam(pi: ParamInfo) {
def render = "*" #> pi.theParam
}
object Param {
// Create a menu for /param/somedata
val menu = Menu.param[ParamInfo]("Param", "Param",
s => Full(ParamInfo(s)),
pi => pi.theParam) / "param"
lazy val loc = menu.toLoc
def render = "*" #> loc.currentValue.map(_.theParam)
}