4

JSFページ間を移動できません。私のナビゲーションのほとんどは、コマンドボタンをクリックしたときに発生します。コマンドボタンのアクションは文字列を返します。

ログインページはウェルカムページです。これが私のweb.xmlにあります:

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>faces/pages/index.xhtml</welcome-file>
</welcome-file-list>

ブラウザのアドレスバーに、ページは次のように表示されます。

http://localhost:8080/ui/faces/pages/index.xhtml

認証が行われると、関数は次の文字列を返します。

"/ui/faces/pages/home.xhtml"

ナビゲートしたいファイルは次の場所にあります。

pages/home.xhtml

ただし、ナビゲーションが発生するはずの場合、次のエラーが発生します。

アクション'#{indexPageController.login()}'のfrom-view-id'/pages/index.xhtml'と一致するナビゲーションケースが見つかりません。結果は'/ui/faces/pages/home.xhtml'です。

ページに正しく移動するために必要な相対パスを誰かが理解するのを手伝ってもらえますか?

4

1 に答える 1

5

ナビゲーションケースの結果にコンテキストパス/uiFacesServletマッピングを含めないでください。/facesこれは、唯一のビューIDを表す必要があります。これは、基本的に、Webコンテンツルートに対して絶対的な、または現在のビューIDからの相対的な物理ビューファイルへのパスです。

/したがって、 Webコンテンツルートに対して絶対(で始まる):

/pages/home.xhtml

または、現在のビューIDに相対的(で始まらない):(/にいると仮定/pages/index.xhtml):

home.xhtml

./ドットスラッシュおよびダブルドットスラッシュの../表記はサポートされていないことに注意してください。

または、ファイル拡張子がなくても。JSFは、Faceletsのデフォルトのサフィックスを意味します。これは、デフォルトで.xhtmlコンテキストパラメータによって構成可能です。javax.faces.DEFAULT_SUFFIX

/ pages / home

結局のところ、コンテキストパス/uiFacesServletマッピング/faces/*がWebアプリ内から制御できないことに気付いた場合にも意味があります。それらが外部で変更された場合は、理論的には、コードベース全体のすべてのナビゲーションケースの結果を変更し、Webアプリを再構築する必要があります。これは意味がありません。したがって、JSFはすでにそれらの面倒を見てくれます。

参照:

于 2012-12-20T00:12:05.837 に答える