3

私は非常にシンプルで私の最初の JSF アプリケーション ( BalusC による非常に優れたチュートリアルに従っている) を Glassfish ローカル サーバーにデプロイしようとしています。アプリケーションを作成するためのすべての手順を完了しました。アプリケーションを Glassfish サーバーにデプロイしようとすると、次の例外メッセージが表示されて失敗しました:-

    cannot Deploy Playground
    Deployment Error for module: Playground: Exception while deploying the app : 
    java.lang.IllegalArgumentException: Invalid URL Pattern: [xhtml]

誰かがどこに問題があるのか​​ 説明できますか?どうすれば修正できますか?

4

3 に答える 3

4

これは有効な 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>
于 2011-03-26T11:02:08.180 に答える
4

. <url-pattern>_ *_ /_ xhtml_

これが私のやり方です。

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
于 2011-03-26T11:05:30.577 に答える
3

サーブレット マッピングのルールは、サーブレット 3.0 仕様でカバーされています。

マッピングの仕様

Web アプリケーションのデプロイメント記述子では、次の構文を使用してマッピングを定義します。

  • 文字で始まり接尾辞/で終わる文字列/* は、パス マッピングに使用されます。
  • プレフィックスで始まる文字列*.は、拡張マッピングとして使用されます。
  • 空の文字列 ("") は、アプリケーションのコンテキスト ルート (つまり、フォームのリクエスト) に正確にマップされる特別な URL パターンです http://host:port/<contextroot>/。この場合、パス情報は/で、サーブレット パスとコンテキスト パスは空の文字列 ("") です。
  • 文字のみを含む文字列/は、アプリケーションの「デフォルト」サーブレットを示します。この場合、サーブレット パスはリクエスト URI からコンテキスト パスを引いたものであり、パス情報は null です。
  • 他のすべての文字列は、完全一致のみに使用されます。

このエラーが発生した場合は、web.xml とマッピング アノテーション ( WebServletWebFilterなど)を確認してください。

JSF サーブレット マッピングの推奨事項は、JSF 2.0 仕様にあります。

拡張マッピングを使用する場合、次のマッピングが推奨されますが、必須ではありません。

<servlet-mapping>
<servlet-name> faces-servlet-name </servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
于 2011-03-26T11:17:56.070 に答える