У меня есть следующая перезапись в Boot.boot ().Это основано на инструкциях, найденных в разделе Перезапись URL в Lift Wiki.
LiftRules.statefulRewrite.prepend(NamedPF("CreateAndEditRewrite") {
case RewriteRequest(
ParsePath("models" :: "createEdit" :: state :: Nil, _, _,_), _, _) => {
Console.println("Rewriting path: models/createEdit/Create to createEdit.html")
val rewriteResp = RewriteResponse(
"models/createEdit" :: Nil, "html" // Use webapp/models/creteEdit.html
)
Console.println("Response refers to URL " + rewriteResp.path + " with parameters " + rewriteResp.params.toList.map(x => "" + x.key + "=" + x.value + ", "))
rewriteResp
}
})
Чтобы убедиться, что все доступно, убедитесь, что SiteMap разрешил доступ к "models / createEdit /create "and" models / createEdit "со следующими строками.
val entries =
Menu(Loc("models", List(""), "Models"),
Menu(Loc("createEditM", List("models","createEdit","Create"), "[NEW]Create Model", loggedIn)),
Menu(Loc("createEditMXX", List("models","createEdit"), "[NEW]Create Model", loggedIn)) ) ::
User.sitemap
// Build SiteMap
LiftRules.setSiteMap(SiteMap(entries:_*))
LiftRules.passNotFoundToChain = true //if a URL isn't found pass responsability to the container
Тем не менее, второй параметр меню работает, в то время как первый выдает« Ошибка HTTP 404 при доступе к / models / createEdit / Create »в контейнереlevel.
Следующие println
появляются на консоли
Rewriting path: models/createEdit/Create to createEdit.html
Response refers to URL ParsePath(List(models/createEdit),html,true,false) with parameters List()
INFO - Service request (GET) /models/createEdit/Create returned 0, took 11 Milliseconds
, что означает, что перезапись была запущена.
Я использую Lift 2.4-M3 с Scala 2.9.0-1.
Кто-нибудь знает, в чем проблема?
Спасибо.
Редактировать : изменен пример кода и добавлен вывод консоли напроясните происходящее.