4

JSF Web サイトのプログラミングから始めます。現時点では、すべてのファイルの末尾が .xhtml になっています。http://localhost:8080/myProject/start.jsfにアクセスすると、すべて問題ありません。しかし、ファイルの名前を start.xhtml から start.jsf に変更すると、NoClassDefFound エラーになりました。

私の間違いは何ですか?

  <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>
4

3 に答える 3

6

パラメータを変更する必要がありjavax.faces.DEFAULT_SUFFIXます(web.xml内)

<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.jsf</param-value>
</context-param>

ただし、これはお勧めできません。ファイルに対して.xhtmlまたは.jspを使用してください。facelets で問題なく使用できることに注意してください.jsp(たとえば、IDE のオートコンプリートが で機能しない場合.xhtml)。

また、次の点にも注意してください。

  • Faces サーブレット マッピングは、jsf ページが http の観点からどのように参照されるかを決定します。
  • パラメータは、DEFAULT_SUFFIXファイルの拡張子を示します。
于 2010-01-22T15:02:30.143 に答える
1

なぜファイルの名前を変更したいのですstart.jsfか? JSF ファイルの正しい拡張子は.xhtml(ただし、Bozho が述べているように、このデフォルトの拡張子を変更できます)。

実際、正確には、この拡張機能はFacelets (または Facelets をネイティブに統合する JSF 2.0) によって定義されており、「基本的な」JSP ファイルを使用する場合は異なります。

于 2010-01-22T15:03:43.333 に答える
0

正しい方法であるため、.xhtml を使用するのが最善ですが、web.xml の javax.faces.DEFAULT_SUFFIX コンテキスト パラメータを使用して構成できます。

于 2010-01-22T15:04:03.940 に答える