2011-07-24 4 views
3

私はJSFを学び、Exadel.comから助けを得ました。私はそこに記載されている手順に従った。JSFコードがブラウザに表示されます

のweb.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID" version="2.5"> 
    <display-name>FBApp</display-name> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
    <context-param> 
     <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
     <param-value>server</param-value> 
    </context-param> 

    <context-param> 
     <param-name>javax.faces.CONFIG_FILES</param-name> 
     <param-value>/WEB-INF/faces-config.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>/faces/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

面-config.xmlの:

<?xml version="1.0" encoding="UTF-8"?> 

<faces-config xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" 
    version="1.2"> 

    <navigation-rule> 
     <from-view-id>/pages/inputname.jsf</from-view-id> 
     <navigation-case> 
      <from-outcome>greeting</from-outcome> 
      <to-view-id>/pages/greeting.jsf</to-view-id> 
     </navigation-case> 
    </navigation-rule> 
    <managed-bean> 
     <managed-bean-name>personBean</managed-bean-name> 
     <managed-bean-class>com.fbapp.bean.PersonBean</managed-bean-class> 
     <managed-bean-scope>request</managed-bean-scope> 
    </managed-bean> 

</faces-config> 

のindex.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>index</title> 
</head> 
<body> 
    <jsp:forward page="faces/pages/inputname.jsf" /> 
</body> 
</html> 

inputname.jsp:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> 
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> 
<html> 
<head> 
    <title>enter your name page</title> 
</head> 
<body> 
    <f:view> 
    <h1> 
     <h:outputText value="JSF KickStart"/> 
    </h1> 
    <h:form id="helloForm"> 
     <h:outputText value="Tell us your name"/> 
     <h:inputText value="#{personBean.personName}" /> 
     <h:commandButton action="greeting" value="Say Hello" /> 
    </h:form> 
    </f:view> 
</body> 
</html> 

今差存在は次のとおりです。index.jspの中

  • 私は<jsp:forward page="faces/pages/inputname.jsf" />を使用し、Exadelは私が<url-pattern>/faces/*</url-pattern>を使用していると、彼らが使用<jsp:forward page="/pages/inputname.jsf" />
  • を使用: <url-pattern>*.jsf</url-pattern>

のjarライブラリは、次のとおりです。

  • コモンズ - beanutils-1.7.0.jar
  • コモンズ・コーデック-1.3.jar
  • コモンズ・コレクション-3.1.jar
  • コモンズ・消化-1.7.jar
  • コモンズ-EL-1.0.jar
  • コモンズ・ファイルアップロード-1.0.jar
  • コモンズ・ラング-2.1.jar
  • コモンズ・ログ-1.0.4.jar
  • コモンズ・バリ-1.1.4.jar
  • JSF-API-1.2.jar
  • JSF-IMP JBossの4.2.2GAにおけるL-1.2-NIGHTLY_20060227.jar
  • JSTL-1.1.2.jar
  • オロ-2.0.8.jar
  • XML-APIを-1.0.b2.jar

(JSF用にカスタマイズされた)私は戦争にその実行を展開したが、私はページのようにレンダリングされるURL http://localhost:8080/FBApp/へ行くしようとしているとき:実際にinputname.jsfのコードである

ERROR

を。私が間違っていることは何ですか?どんな情報でもわかるでしょう。

ありがとうございます。


編集:BalusCの指示により コードを変更。あなたは実際 JSPは.jsf拡張子をファイル与えた場合、これが発生する可能性が

19:34:04,244 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception 
java.lang.NullPointerException 
    at com.sun.faces.taglib.jsf_core.ViewTag.doStartTag(ViewTag.java:162) 
    at org.apache.jsp.pages.inputname_jsp._jspx_meth_f_005fview_005f0(inputname_jsp.java:104) 
    at org.apache.jsp.pages.inputname_jsp._jspService(inputname_jsp.java:77) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292) 
    at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:694) 
    at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:665) 
    at org.apache.jsp.index_jsp._jspService(index_jsp.java:63) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
    at java.lang.Thread.run(Thread.java:636) 
19:34:04,245 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception 
java.lang.NullPointerException 
    at com.sun.faces.taglib.jsf_core.ViewTag.doStartTag(ViewTag.java:162) 
    at org.apache.jsp.pages.inputname_jsp._jspx_meth_f_005fview_005f0(inputname_jsp.java:104) 
    at org.apache.jsp.pages.inputname_jsp._jspService(inputname_jsp.java:77) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292) 
    at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:694) 
    at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:665) 
    at org.apache.jsp.index_jsp._jspService(index_jsp.java:63) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
    at java.lang.Thread.run(Thread.java:636) 
+0

これは、通常、JBossがソースコードの解析/コンパイルを行っていないことを意味します。他のテストプロジェクトは機能しますか? – Jacob

+0

@cularisこれは私の最初のプロジェクトです。私は 'java.lang.ClassCastExceptionを取得していました:com.sun.faces.application.ApplicationAssociateをcom.sun.faces.application.ApplicationAssociate'にキャストすることができず、私はこの問題の解決策を見つけました[http:// dushyants .blogspot.com/2009/01/error-running-jsf-with-jboss.html)、問題が解決されたとのことでした。 JSF 1.2でJBoss 4.2.2を使用しています。 –

答えて

8

:今、私は例外とスタックトレースを取得しています。つまり、inputname.jspファイルはWebコンテンツフォルダにありませんが、は実際にはinputname.jsfファイルです。これは間違っています。これらのJSPファイルは、JspServletで処理されるためには、.jspの拡張子を保持する必要があります。さもなければそれらのファイルはJSPとして全く解析されず、Webブラウザにプレーンテキストとして終わるでしょう。

FacesServletのURLパターンを(推奨する)*.jsfの代わりに/faces/*に変更しました。したがって、チュートリアルのすべてのURLを/foo.jsfから/faces/foo.jspに変更する必要があります。また、forwards/includesとnavigationのケースでも変更する必要があります。 ではなく/faces/foo.jsfに変更し、実際のファイルで間違った拡張子を使用する必要があります。具体的な問題とは無関係の


:あなたの代わりに、より最近のJSF 2.0対象とチュートリアルの6歳のJSF 1.1対象とチュートリアルを読んでいるいずれかの特定の理由がありますか? JSF 1.1にはdisadvantagesが非常に多く、1.5年前から従来のJSPがFaceletsに引き継がれています。質問にコメントどおり


更新:この@cularis

は、実際に私の最初のプロジェクトです。私はjava.lang.ClassCastException: com.sun.faces.application.ApplicationAssociate cannot be cast to com.sun.faces.application.ApplicationAssociateを得ていました。私はこの問題の解決策をここで見つけ出し、問題は解決しました。私はJBoss 4.2.2をJSF 1.2で使用しています

この例外は、ランタイムクラスパスが異なるバージョンのJSFライブラリで汚染されている場合に発生します。 JBossにはJSFが既に組み込まれているので、webappの/WEB-INF/libフォルダにJSFライブラリを提供するべきではありません。別のバージョンの場合は、上記のような例外と衝突する可能性があります。質問更新ごとなど


アップデート2

java.lang.NullPointerException 
    at com.sun.faces.taglib.jsf_core.ViewTag.doStartTag(ViewTag.java:162) 

まあ、これは厄介な一つであり、私は前にそれを見ていません。私はクラスパスの汚染だけに起因すると賭けるでしょう。 JBoss 4.2.xには、JSF 1.2とJSTL 1.1がすでに組み込まれています。 jsf * .jarとjstl * .jarライブラリを/WEB-INF/libから削除してください。 web.xmlからすべてのJSF関連の<context-param><listener>エンティティも削除してください。あなたがこれまで行ってきたのは、JSF 1.2のデフォルトです。それはあなたの具体的な問題を解決するかもしれないし、解決しないかもしれないが、少なくともノイズを最小限にするべきである。お知らせ下さい。


Update 3のコメントどおり

私は、Webからのjarファイルとエントリを削除しました。jboss-4.2.2.GA/server/default/deploy/jboss-web.deployer/conf/web.xmlでコメント行のコメントを外してください。今度はjava.lang.RuntimeException: Cannot find FacesContextになります。しかし、以前の問題は解決されました

非常に良い。 Cannot find FacesContextエラーの原因は簡単です。FacesServletが呼び出されていません。したがって、リクエストまたは転送URLは、FacesServletのURLパターンとまったく一致しませんでした。あなたのFacesServletをまだURLパターン/faces/*にマッピングしていて、あなたのウェブコンテンツに物理的な/pages/inputname.jspファイルがあるとすれば、あなたのindex.jspには次の1行だけが含まれているはずです(はい、無関係なHTMLもすべて削除します)。 )

<jsp:forward page="faces/pages/inputname.jsp" /> 

だけで動作するはず

http://localhost:8080/FBApp/

を呼び出すこの方法です。それはいくつかの理由でない場合、少なくとも

http://localhost:8080/FBApp/faces/pages/inputname.jsp

必見仕事を呼び出す(私に知らせてください)。コメントどおり


更新4

のFacesContext例外はうーん、これも私には新しいものでは解決されたが、今ではjavax.faces.FacesException: java.net.MalformedURLException: Path faces-config.xml does not start with a "/" character.

を投げています。 web.xmlはどのようになっていますか?これは、あなたがコンテキストパラメータを持っていて、間違った値がfaces-config.xmlであることを示しています。 /WEB-INF/faces-config.xmlの値を持つjavax.faces.CONFIG_FILESコンテキストパラメータをweb.xmlに戻してみてください。おそらく、JBossで使用されているJSF 1.2のインプリメントには、これに関するいくつかのバグがあります。

+0

あなたの提案に非常に感謝し、私は言ったように措置を講じます。しかし、現在のシナリオではJSF 1.2を使用していますが、後者ではJSF 2.0に行きます。オリジナルの投稿に例外スタックトレースを追加しました。解決策を見つける手助けはできますか? –

+0

回答の更新を参照してください。 – BalusC

+0

web.xmlからjarとエントリを削除し、jboss-4.2.2.GA/server/default/deploy/jboss-web.deployer/conf/web.xmlのコメント行のコメントを外しました。 java.lang.RuntimeException:FacesContextを見つけることができません。しかし、以前の問題は解決されています。 –

1

初心者の方は、JSF 2.0の読み込みを開始し、古い非推奨1.1では実際に始めるべきです。 JSFに関連する書籍がたくさんあります。 ベスト

関連する問題