- PR -

Eclipse + FacesIDE で NullPointer

1
投稿者投稿内容
TAKEZO
ベテラン
会議室デビュー日: 2003/12/25
投稿数: 59
投稿日時: 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の設定は問題ないと思います。多分・・・

宜しくお願いします。
TAKEZO
ベテラン
会議室デビュー日: 2003/12/25
投稿数: 59
投稿日時: 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>
takashi
ベテラン
会議室デビュー日: 2004/02/12
投稿数: 79
お住まい・勤務地: 東京
投稿日時: 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/

以上ご参考になれば幸いです。
TAKEZO
ベテラン
会議室デビュー日: 2003/12/25
投稿数: 59
投稿日時: 2005-06-24 14:54
takashi 様
ご指摘頂いたとおり、JSFを起動ページに設定しておりました。
早速転送の設定をしたところ、画面に HELLO WORLD と表示するところまで
何とか出来ました。引き続き検証をしてみたいと思います。

大変助かりました有り難うございました。
よしだひろゆき
大ベテラン
会議室デビュー日: 2004/11/22
投稿数: 141
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)