- - PR -
Eclipse + FacesIDE で NullPointer
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-06-24 11:59
JFSを検証してみようとEclipseにFacesIDEプラグインを追加して実行してみたところ
下記のようなエラーが出てうまく実行できません。 2005-06-24 11:42:03 StandardWrapperValve[jsp]: サーブレット jsp のServlet.service()が例外を投げました java.lang.NullPointerException at javax.faces.webapp.UIComponentTag.setupResponseWriter(UIComponentTag.java:634) at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:244) at org.apache.myfaces.taglib.core.ViewTag.doStartTag(ViewTag.java:90) at org.apache.jsp.index_jsp._jspx_meth_f_view_0(index_jsp.java:89) at org.apache.jsp.index_jsp._jspService(index_jsp.java:65) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688) at java.lang.Thread.run(Unknown Source) 関係あると思われるツール類の環境は下記の通りです。 ・Eclipse3.01 ・Lomboz Plugin 3.0.1 ・FacesIDE 0.1.5 ・Tomcat 5.0.19 ちなみに、FacesIDEを組み込む前は通常のJSP等は正しく処理できていたので LombozやTomcatの設定は問題ないと思います。多分・・・ 宜しくお願いします。 |
|
投稿日時: 2005-06-24 12:50
ウィザードが自動生成したものですが念のためJSPのソースを掲載しておきます。
<%@ page contentType="text/html; charset=MS932" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=MS932"/> <title></title> </head> <body> <f:view> <h:form> </h:form> </f:view> </body> </html> |
|
投稿日時: 2005-06-24 13:43
自動生成されたJSP(JSF)ファイルが最初に起動されるページになっていませんか?
一番最初に起動するページは以下のような転送用ページにする必要があるようです。 起動時にコンポーネントツリーが存在しないことが原因だったような・・・? ----------------------------------------------------------------------- <%@page contentType="text/html; charset=MS932" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=MS932"/> <title>転送用ページ</title> </head> <body> <jsp:forward page="enter.jsf" /> </body> </html> ----------------------------------------------------------------------- こちらにサンプルがありました(MyFacesですが)。 http://www.myfaces.org/ 以上ご参考になれば幸いです。 |
|
投稿日時: 2005-06-24 14:54
takashi 様
ご指摘頂いたとおり、JSFを起動ページに設定しておりました。 早速転送の設定をしたところ、画面に HELLO WORLD と表示するところまで 何とか出来ました。引き続き検証をしてみたいと思います。 大変助かりました有り難うございました。 |
|
投稿日時: 2005-06-27 12:02
ちなみに,起動ページにするかどうかの問題ではありません.
JSFはメインサーブレットとしてFacesServletというプログラムが処理します. web.xmlを見てください. <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>*.jsf</url-pattern> </servlet-mapping> のようになっていると思いますが,この指定であれば,URLがenter.jsfの時に FacesServletが起動します.JSFはこのURLに対してenter.jspというビューIDを 作り出して,それに対してRequestDispatcherを生成してforwardします. つまり,URLとしてenter.jspを指定してもFacesServletが起動しないので JSFとしての処理が正しく行われないわけです. URLとしてenter.jsfを指定すれば動きます. URLとして何を指定すれば良いかはweb.xmlのurl-patternの指定によります. |
1