Pergunta
Estou tentando modificar o boot.scala em levantamento e com um erro engraçado. Isso é o que eu tenho atualmente:
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 :_*))
Eu recebo este erro:
Boot.Scala: 29: Erro: Value :: Não é membro do Net.Liftweb.sitemap.menu Menu (loc ("Studentlogin", List ("Studentlogin"), "Student Login")) ::
Alguma idéia sobre o que eu posso estar fazendo de errado?
Obrigado.
Solução
Parece que você está tentando construir uma lista com contras sem ter uma lista vazia no final. Tente isso em vez disso
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 :_*))
Outras dicas
Por favor, dê uma olhada na página do Sitemap Wiki também: http://liftweb.assembla.com/wiki/show/liftweb/sitemap
A nova e aprimorada sintaxe do 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"))
Não usar o operador :: pode ser mais legível:
val entries = List(Menu(Loc("Home",
List("index"), "Home")),
Menu(Loc("StudentLogin",
List("studentlogin"), "Student Login")),
Menu(Loc("ProviderLogin",
List("providerlogin"), "Provider Login")))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow