Boot.boot()に次の書き換えがあります。これは、Lift WikiのURL Rewritingセクションにある指示に基づいています。サイトマップのリンクを参照した後でもRewriteRequestが機能しないのはなぜですか?
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
}
})
すべてがアクセス可能になることを確認サイトマップ「を作成/モデル/ createEdit」へのアクセスを許可し、次の行で、「モデル/ 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
、2番目のメニューオプションは、最初はyeldsながら、コンテナレベルの「HTTPエラー404 問題へのアクセス/モデル/ createEditを作成/」動作します。
次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
に表示されます。
私はScala 2.9.0-1でLift 2.4-M3を使用しています。
誰でも問題は何か考えていますか?
ありがとうございました。
:コードサンプルが変更され、コンソール出力が追加され、何が起きているのかが明確になりました。
最初のメニュー(「createEditM」)は決してアクセスされません。すべてのリクエスト/ models/createEdit /?/models/createEditにリダイレクトされます – coubeatczech
@coubeatczech - _menu_ "createEditM"がインターフェイスに表示され、それをクリックできます。クリックすると新しいリクエストが発生するため、_rerite_がジャンプして_404_になります。私は_rewrite_が "書き換えパス:createEdit.htmlへのモデル/ createEdit/Create"がコンソールに表示されるためにトリガされることを知っています。モデル/ createEdit.htmlスニペットが見つかりません。 : –
リライトがトリガされ、モデル/ createEdit.htmlを含むレスポンスが作成されることを示す新しい編集が行われました –