2

Eclipse IDE で JBoss4.2 を使用しています。hellojsfJSP ビュー テクノロジを使用してプログラムを実行すると、正常に動作します。同じコンポーネントを使用して Facelets を試してみると、次の例外が発生します。

2012-06-20 12:41:30,941 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/HelloJSF].[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
java.lang.StackOverflowError
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)

これはどのように発生し、どうすれば解決できますか?

4

1 に答える 1

3

FacesServletが無限ループで実行されました。これは、新しい JSF 2.x ではなく古い JSF 1.2 を使用していて、JSP の代わりに XHTML を使用するように JSF を適切に構成していない場合に発生する可能性があります。JSF 1.2 は Facelets をサポートしていませんが、JSF 2.x には Facelets がバンドルされています。

JSF 2.0 へのアップグレードがオプションでない場合 (JBoss 4.2 は Servlet 2.5 互換コンテナーとしてサポートされているはずです)、Facelets 1.x を個別にインストールする必要があります。jsf-facelets-1.1.15.jarをダウンロードしてドロップし/WEB-INF/lib、編集web.xmlして JSF が.xhtmlデフォルトのサフィックスとして使用するように指示します。

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

FacesServletマッピング URL パターンをにすることはできません*.xhtmlこれにより、無限ループで実行される可能性があります。そのままにしておいて*.jsfください。

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>

さらに、Facelets ビュー ハンドラを で設定することを忘れないでくださいfaces-config.xml

<application>
    <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>    
</application> 

これで、JSP ファイルに使用したのと同じように、Facelets ファイルを通常の方法で開くことができますhttp://localhost:8080/context/page.jsf。唯一の違いはpage.xhtmlpage.jsp.

JSF 2.x を使用する場合、コンテキスト パラメータとビュー ハンドラは、JSF 2.x のデフォルト値であるため不要です。また、JSF 2.x を使用する場合は、URL パターンを安全に に設定できます*.xhtml

以下も参照してください。

于 2012-06-20T14:04:15.910 に答える