質問

非常に単純な、初めての 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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top