- PR -

Strutsについて教えてください!

1
投稿者投稿内容
まるこ
会議室デビュー日: 2004/10/10
投稿数: 9
投稿日時: 2004-10-10 03:52
はじめまして、まるこです。
今EclipseでStrutsを使用しようとしているのですが
設定がおかしいのかErrorになってしまいます。
タグにエラーが出てしまうんです。
いろいろ試しているのですがもう自分ではどうしたらよいのか
困っています。。
どうしたらよいのかアドバイスお願いします。
Struts以前の問題かもしれませんが。。

JSP(JSP名はhallo)

<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html>
<html:html>
<head>
<title>ログオン画面</title>
</head>
<body bgcolor="#ffffff">
<center>
<h3>ログオン画面</h3>
<html:form action="/hello"> ←これを追加するとエラーになります。
<html:errors />
<table border="0">
<tr><td>社員番号:</td></tr>
<tr><td>パスワード:</td></td></tr>
</table>
<br><br>
<html:submit value="ログオン" />
</html:form>  ←これを追加するとエラーになります。
</center>
</body>
</html:html>
</html>
Eclipseでのエラー

エラー内容。
Apache Tomcat/4.0.4 - HTTP Status 500 - Internal Server Error
type Exception report

message Internal Server Error

description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Cannot retrieve definition for form bean null
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)
at org.apache.jsp.hello$jsp._jspService(hello$jsp.java:183)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:683)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:431)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:355)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:320)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at sample.web.filter.EncodingFilter.doFilter(EncodingFilter.java:65)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
at java.lang.Thread.run(Thread.java:536)


root cause

javax.servlet.jsp.JspException: Cannot retrieve definition for form bean null
at org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:831)
at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:506)
at org.apache.jsp.hello$jsp._jspService(hello$jsp.java:84)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:683)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:431)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:355)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:320)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at sample.web.filter.EncodingFilter.doFilter(EncodingFilter.java:65)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
at java.lang.Thread.run(Thread.java:536)

未記入
ベテラン
会議室デビュー日: 2004/09/27
投稿数: 71
投稿日時: 2004-10-10 06:13
<%@ taglib uri="/tags/struts-html" prefix="html" %>

<html>.....</html> ←削除
まるこ
会議室デビュー日: 2004/10/10
投稿数: 9
投稿日時: 2004-10-10 11:18
回答ありがとうございます。
<%@ taglib uri="/tags/struts-html" prefix="html" %>
を追加して
<html></html>を削除しましたがやはり同じエラーが出てしまいます。
JSP以外がおかしいのでしょうか?
Xmlの設定とかも関係ありますか?
とうか宜しくお願いします。

パッケージ名:erika
JSP:hello.jsp 初期画面
JSP:menu 遷移先画面
class:HelloAction.java
class:LogonForm

Xml
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<!-- ======================================== Form Bean Definitions -->
<form-beans>
<form-bean
name="LogonForm"
type="erika.LogonForm"/>
</form-beans>
<!-- ================================= Global Exception Definitions -->
<global-exceptions>
</global-exceptions>
<!-- =================================== Global Forward Definitions -->
<global-forwards>
<!-- Default forward to "Welcome" action -->
<!-- Demonstrates using index.jsp to forward -->
<forward
name="welcome"
path="/Welcome.do"/>
</global-forwards>
<!-- =================================== Action Mapping Definitions -->
<action-mappings>
<!-- Default "Welcome" action -->
<!-- Forwards to Welcome.jsp -->
<action path="/hello"
type="erika.HelloAction">
<forward name="erika" path="/hello.jsp"/>
</action>
<action path="/menu"
type="erika.HelloAction">
<forward name="erika" path="/menu.jsp"/>
</action>
</action-mappings>
<!-- ===================================== Controller Configuration -->
<controller

processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
<!-- ================================ Message Resources Definitions -->
<message-resources parameter="resources.application"/>
<!-- ======================================= Plug Ins Configuration -->
<!-- ========== Tiles plugin =================== -->
<!-- comment following if struts1.0.x -->
<plug-in className="org.apache.struts.tiles.TilesPlugin" >
<set-property property="definitions-config"
value="/WEB-INF/tiles-defs.xml" />
<set-property property="moduleAware" value="true" />
<set-property property="definitions-parser-validate" value="true" />
</plug-in>

<!-- end comment if struts1.0.x -->

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

</struts-config>



[ メッセージ編集済み 編集者: まるこ 編集日時 2004-10-10 11:19 ]
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-10-10 12:05
まるこさん、こんにちは。

エラーメッセージに答えが書いてありますけど。
引用:

javax.servlet.jsp.JspException: Cannot retrieve definition for form bean null



失礼ながら、これ、Strutsの基本というか原点だと思いますが。
typeとか必要ないのでしょうか?
Pickles
会議室デビュー日: 2004/10/10
投稿数: 1
投稿日時: 2004-10-10 13:43
html:formを使うときはstruts-config.xmlのactionで必ずFormBeanを指定する必要があります。
以下のようにname属性でFormBeanを指定してみてください。

コード:

<action path="/hello"
type="erika.HelloAction"
name="LogonForm">
<forward name="erika" path="/hello.jsp"/>
</action>




[ メッセージ編集済み 編集者: Pickles 編集日時 2004-10-10 13:44 ]
まるこ
会議室デビュー日: 2004/10/10
投稿数: 9
投稿日時: 2004-10-11 02:08
返信ありがとうございます。

<action path="/hello"
type="erika.HelloAction"
name="LogonForm">
<forward name="erika" path="/hello.jsp"/>
</action>

を追加したら画面が表示されるようになりました!
さらに質問なのですが、
初期画面(hello.jsp)の表示はこれでできるようになりましたが
遷移先画面(menu.jsp)に遷移するのに
xmlに

<action path="/hello"
type="erika.MenuAction"
name="LogonForm">
<forward name="erika" path="/menu.jsp"/>
</action>

を追加してみたのですが遷移しません。
それとも初期画面表示には
http://localhost:8080/test3/hello.do
ではなく、
http://localhost:8080/test3/hello.jsp
で表示させておけばいいのでしょうか?
そうするとログオンボタンを押すと画面が遷移します。
http://localhost:8080/test3/menu.do

その場合は
<action path="/hello"
type="erika.HelloAction"
name="LogonForm">
<forward name="erika" path="/hello.jsp"/>
</action>
をXMLから削除していますが。。

またmenu.jspに遷移した際社員番号が表示されません。
LogonFormでSystem文を追加してempnoの値が取得できているか
確認してみましたが、取得できていました。

<html:html>
<head>
<title>メニュー画面</title>
</head>
<body bgcolor="#ffffff">
<center>
<h3>メニュー画面</h3>

<br>
ログオン中の社員番号:<bean:write name="LogonForm" property="empno" />

</center>
</body>
</html:html>

初歩的な質問ばかりで申し訳ありませんが
どうぞ宜しくお願いします。
ちば
大ベテラン
会議室デビュー日: 2003/02/14
投稿数: 114
お住まい・勤務地: 都内勤務
投稿日時: 2004-10-11 02:19
こんばんわ、ちばです。
引用:

まるこさんの書き込み (2004-10-11 02:08) より:
<action path="/hello"
type="erika.HelloAction"
name="LogonForm">
<forward name="erika" path="/hello.jsp"/>
</action>
(省略)
<action path="/hello"
type="erika.MenuAction"
name="LogonForm">
<forward name="erika" path="/menu.jsp"/>
</action>
を追加してみたのですが遷移しません。


上と下の定義でaction path="/hello"が重複しているのが原因と思います。
まるこ
会議室デビュー日: 2004/10/10
投稿数: 9
投稿日時: 2004-10-12 01:10
返信ありがとうございます。

action path="/hello"の部分の修正と
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
の追加で画面遷移した画面に表示されるようになりました。
そしてまたまた質問なのですが
<%@ page contentType="text/html; charset=Shift_JIS"%>
この部分にエラーマークが発生しています。
Ecipseでの画面上に。。
でもプログラムは正常に動いていますがTomcatを起動した時に
エラーが出ているみたいなんです。
エラーの一部です
何か基本的な設定がおかしいのでしょうか?
変な質問ばかりですみません。。
宜しくお願いします。

種類 状況 優先順位 説明 リソース フォルダー内 ロケーション
エラー _jspx_tagPool_html_errors は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
エラー _jspx_tagPool_html_errors は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
エラー _jspx_tagPool_html_form_action は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
エラー _jspx_tagPool_html_form_action は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
エラー _jspx_tagPool_html_form_action は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
エラー _jspx_tagPool_html_html は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
エラー _jspx_tagPool_html_html は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
エラー _jspx_tagPool_html_password_size_property_maxlength は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
エラー _jspx_tagPool_html_password_size_property_maxlength は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
エラー _jspx_tagPool_html_password_size_property_maxlength は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
エラー _jspx_tagPool_html_submit_value は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
エラー _jspx_tagPool_html_submit_value は解決できません。 hello.jsp test3 /test3/hello.jsp-Line:[0] の 1 行
1

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