java.lang.IllegalArgumentException:無効な URL パターン:[xhtml] [重複]
-
12-11-2019 - |
質問
非常に単純な、初めての JSF アプリケーションをデプロイしようとしています ( BalusC による本当に良いチュートリアル)Glassfish ローカルサーバー上。アプリケーションを作成するためのすべての手順が完了しました。そして、アプリケーションを glassfish サーバーにデプロイしようとすると、次の例外メッセージが表示されて失敗しました。
cannot Deploy Playground
Deployment Error for module: Playground: Exception while deploying the app :
java.lang.IllegalArgumentException: Invalid URL Pattern: [xhtml]
どこに問題があるのか、どのように修正すればよいのか説明していただけますか?
解決
これは有効な URL パターンではありません。マッピングをプレフィックス マッピングまたは拡張子マッピングとして配置できます ( JSF 2.0仕様):
プレフィックスマッピング:
<servlet-mapping>
<servlet-name> faces-servlet-name </servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
拡張子のマッピング:
<servlet-mapping>
<servlet-name> faces-servlet-name </servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
他のヒント
あなたの <url-pattern>
一致する拡張子 (で始まる) が必要です。 *
) またはプレフィックス マッチング (で始まる) /
) だけではなく含まれています xhtml
.
これが私がやった方法です。
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
サーブレット マッピングのルールについては、 サーブレット 3.0 の仕様:
マッピングの仕様
Webアプリケーションの展開記述子では、次の構文を使用してマッピングを定義します。
- a で始まる文字列
/
文字と末尾に/*
サフィックスはパスマッピングに使用されます。- a で始まる文字列
*.
プレフィックスは、拡張マッピングとして使用されます。- 空の文字列( "")は、アプリケーションのコンテキストルート、つまりフォームの要求に正確にマップする特別なURLパターンです
http://host:port/<contextroot>/
. 。この場合、パス情報はです/
サーブレットパスとコンテキストパスは空の文字列( "")です。- のみを含む文字列
/
文字は、アプリケーションの「デフォルト」サーブレットを示します。この場合、サーブレットパスはリクエストURIからコンテキストパスを差し引いて、パス情報はnullです。- 他のすべての文字列は完全一致のみに使用されます。
このエラーが発生した場合は、web.xml とマッピングの注釈 (Webサーブレット, ウェブフィルター, 、など)
JSF サーブレット マッピングの推奨事項については、 JSF 2.0仕様.
拡張マッピングを使用する場合、次のマッピングが推奨されますが、必要ありません。
<servlet-mapping> <servlet-name> faces-servlet-name </servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping>
所属していません StackOverflow