- PR -

スコープ request にBean msg がありません

1
投稿者投稿内容
マガ
会議室デビュー日: 2004/04/15
投稿数: 3
投稿日時: 2008-11-17 11:17
■環境
 Eclipse 3.3.2
 TOMCAT 5.5
 JDK 1.5.0.11
 Struts 1.3.8

秀和システム Javaフレームワーク入門のサンプルを実行しています。
BeanからJSPへの値渡し部分(リスト3-17)でエラーを吐いています。

JSPの<bean:define>部分でエラーが発生しているのは分かるのですが、
解決方法が良く分からないです。
Actionクラスで"request.setAttribute("msg", str);"を行っています。
ちなみに、下記コードでは正常に表示されます。
---------------------------------------------------
<span>
 ${requestScope.msg}
</span>
---------------------------------------------------
どなたかアドバイスまたは解決策を御教授頂けないでしょうか。


例外:
org.apache.jasper.JasperException: スコープ request にBean msg がありません
 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

原因:
javax.servlet.ServletException: スコープ request にBean msg がありません
 org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
 org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
 org.apache.jsp.JSP.page1_jsp._jspService(page1_jsp.java:132)
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

原因:
javax.servlet.jsp.JspException: スコープ request にBean msg がありません
 org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:866)
 org.apache.struts.taglib.bean.DefineTag.doEndTag(DefineTag.java:219)
 org.apache.jsp.JSP.page1_jsp._jspService(page1_jsp.java:95)
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:729)


JSP
================================================================================
<%@ page contentType="text/html; charset=EUC-JP" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<html:html>
   <head>
    <meta http-equiv="Content-Type" content="text/html;
     charset=EUC-JP" />
   </head>

  <body>
    <bean:define id="message" name="msg" scope="request" type="java.lang.String"/>
    <bean:write name="message"/>
    <br />
    <br />

    <html:form method="POST" action="action1.do">
     <html:text property="text1" readonly="true"
      value="${requestScope.msg}" size="20" />
     <br />
     <html:text property="field1" size="20" />
     <br />
     <html:submit />
    </html:form>

  </body>
</html:html>
================================================================================

web.xml
================================================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
   id="struts1a"
   version="2.4">
   <display-name>struts1a</display-name>

  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet
    </servlet-class>
    <init-param>
     <param-name>config</param-name>
     <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>action</servlet-name>
      <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
      <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
================================================================================

struts-config.xml
================================================================================
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts-config PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
    "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
   <form-beans>
     <form-bean
       name="page1form"
       type="jp.tuyano.framework.Page1ActionForm"/>
   </form-beans>

   <action-mappings>
     <action
       path="/action1"
       name="page1form"
       type="jp.tuyano.framework.Page1Action"
       input="/JSP/page1.jsp"/>
   </action-mappings>
</struts-config>
================================================================================
マガ
会議室デビュー日: 2004/04/15
投稿数: 3
投稿日時: 2008-11-17 12:05
web.xmlに誤りがありました。
現在の設定は下記の通りです。

web.xml
================================================================================
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
   id="struts1a"
   version="2.4">
   <display-name>struts1a</display-name>

  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet
    </servlet-class>
    <init-param>
     <param-name>config</param-name>
     <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>action</servlet-name>
      <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
      <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
================================================================================
ジン
ベテラン
会議室デビュー日: 2007/07/27
投稿数: 52
投稿日時: 2008-11-17 13:20
【Action】
request.setAttribute("msg", str);

【JSP】
<bean:define id="message" name="msg" scope="request" type="java.lang.String"/>


こんな使い方できました?うる覚えですみません

【例外】
スコープ request にBean msg がありません
のままじゃないですかね??

Beanを作成してmsgのセッター・ゲッターを作る
JSPを以下のように変更する
<bean:define id="message" property="msg" name="キー" scope="request" type="作成したBean"/>

じゃダメですか??
マガ
会議室デビュー日: 2004/04/15
投稿数: 3
投稿日時: 2008-11-17 14:25
引用:

【例外】
スコープ request にBean msg がありません
のままじゃないですかね??

Beanを作成してmsgのセッター・ゲッターを作る
JSPを以下のように変更する
<bean:define id="message" property="msg" name="キー" scope="request" type="作成したBean"/>



原因は"スコープ request にBean msg がありません"で明らかと思うのですが、解決方法が分からないのですよね・・・

参考図書にサンプルコードが付いているので、
今回のソースと比較してみたのですが問題となっている箇所は一致していました。
※問題箇所をコメントにすると正常動作
ですので、恐らく環境面が原因かと思い始めています。
Eclipse上でstruts-config.xmlの下記部分に黄線が付いてて、
"The file cannot be validated as the host "struts.apache.org" is currently unreachable."と言っているので。
<!DOCTYPE .... "http://struts.apache.org/dtds/struts-config_1_3.dtd">
             ^^^^^^^^^^^^黄線^^^^^^^^^^^^^^^^^
<間違い>
 ジンさんが書いて下さっていたコードも試してみましたが、やはり同じエラーとなってしまいます。
</間違い>
Beanを作成するのですね。JSPだけ変更していました。
タグの使い方でサンプルのようにできるとあるので、Bean作成せずに動作させてみたいのが本音です。
もう少し調べてみます。
ありがとうございます!

[ メッセージ編集済み 編集者: マガ 編集日時 2008-11-17 16:35 ]
1

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