- PR -

struts初心者からの質問。

投稿者投稿内容
オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-05-24 15:54
以下のソースを作りましたが、エラー:Cannot find bean /Ichiran in any scope
とでました。目的としては、アクセスしたときに、"test"と画面にでるようにしたいです。
これを応用して、HashMapをつかってDBのデータを一覧表にしたいと考えています。
データがどこにどのように移動してるのかが分かっておらず困っています。
長い書き込みですが、宜しくお願いします。

コード:
・JSP ファイル ichiran.jsp


<%@page contentType="text/html;charset=Shift-JIS" %>
<%@ taglib uri="WEB-INF/struts-html.tld "prefix="html" %>
<%@ taglib uri="WEB-INF/struts-bean.tld "prefix="bean" %>
<%@ taglib uri="WEB-INF/struts-logic.tld" prefix="logic" %>


<html:html>
<body>
  <bean:write name="/Ichiran" property="record"/>
</body>
</html:html>


・struts-config.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="IchiranActionForm"
type="licenseManageSystem.IchiranActionForm">
</form-bean>

</form-beans>

<!-- =================================== Action Mapping Definitions -->

<action-mappings>
<action
path="/Ichiran"
type="licenseManageSystem.IchiranAction"
name="IchiranActionForm"
scope="request">
<forward name="success" path="/ichiran.jsp"/>
</action>


</action-mappings>

</struts-config>


・IchiranActionForm.java(アクションFormBean)

package licenseManageSystem;

import org.apache.struts.action.ActionForm;

public final class IchiranActionForm extends ActionForm
{
private String record = "test";

public void setRecord(String record)
{
   this.record = record;
}

public String getRecord()
{
   return record;
}

}


・IchiranAction.java(アクションクラス)

package licenseManageSystem;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.*;

public final class IchiranAction extends Action
{
public ActionForward execute(ActionMapping map,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res)
{
IchiranActionForm record = (IchiranActionForm)form;
req.setAttribute("MyForm",record);
return (map.findForward("success"));
}

}



直しました。
ご指摘ありがとうございます。



[ メッセージ編集済み 編集者: オガシン 編集日時 2006-05-24 16:14 ]
みまな
会議室デビュー日: 2004/10/24
投稿数: 9
投稿日時: 2006-05-24 16:02
こんにちは。

とりあえず、FAQ読んでください。
みまな
会議室デビュー日: 2004/10/24
投稿数: 9
投稿日時: 2006-05-24 16:20
どういうURLを入力してアプリケーションを開始させようとしていますか(アドレスバーに入れるURLは何ですか)?
オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-05-24 16:25
以下の両方を試して見ました。
・http://localhost:8080/LicenseManageSystem/ichiran.jsp
エラー:Cannot find bean record.record in scope request

・http://localhost:8080/LicenseManageSystem/ichiran.do
エラー:Invalid path /ichiran was requested

となってしまいます。
始めたばかりで、指摘していただいた内容の答えになってるか心配ですが、
宜しくお願いします。
みまな
会議室デビュー日: 2004/10/24
投稿数: 9
投稿日時: 2006-05-24 16:41
んー。。
ご本人も認識されているようですが、
どのように画面遷移させるかを頭の中でイメージできていないと思います。
こういうのは複数のケースを「試す」ものではなく、あなたが決めるものです。

たとえば、

  1. URLに http://localhost:8080/LicenseManageSystem/ichiran.do といれる。
  2. すると、ichiran.doに対応したアクションが実行され、その結果がJSPに返る。
  3. JSPを表示する。

というふうに「決める」と、やらないといけないことが見えてくると思います。

  • ichiran.doというURLとアクションを結びつけないといけない。
  • アクションのメソッド内でBeanの値をJSPに教えないといけない。
  • ichiran.doが実行された後に遷移するJSPを決めないといけない。

という感じでしょうか(たぶん完全ではないですが)。

ここまで決めてから、コードを書いてみてはいかがでしょうか。
オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-05-24 16:48
なるほど。ちょっと急いでやりすぎましまったかもしれません。

指摘・指導していただいたことを参考に、1から考えなおして、
またソースを作ってみたいと思います。

みまなさん。
お返事、ありがとうございます。
ゴングラッチェ
常連さん
会議室デビュー日: 2006/03/03
投稿数: 36
投稿日時: 2006-05-24 16:49
引用:
<bean:write name="/Ichiran" property="record"/>


なんで「/Ichiran」なんでしょうねぇ。「IchiranActionForm」じゃないのかね。エラーメッセージが間違いを指摘してくれてますよ。Beanを指定するところにActionのパスを指定してちゃってるんですね。他にも原因があるかもしれませんが、ぱっと見て気付いたのはここでした。

たぶんStrutsについて勉強をしようとしていることと思います。Strutsについては色々な方々がホームページ上に情報やサンプルを公開されているので、一度ググッてみると幸せになれるかもしれません。
データの移動については、Bean、struts-config、JSPがどういうふうに連けいをしているのかを理解すると幸せになれます。
今回の質問で、私が気付いた点はケアレスミスでした。最初はちょっとした事でわからなくなるかもしれませんが、落ち着いて確認してみましょ。
HashMapをつかったDBのデータ一覧表作成は、今の段階ではハードルが高そうですね。Strutsの動き、連携がどうなっているのかを理解することを省くと不幸になっちゃうかもしれませんよ。
オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-05-24 17:12
ゴングラッチェさん、お返事ありがとうございます。

指摘していただいた、場所を変更したところ、画面に文字が出力されました。

strutsを始めたばかりで、連携や遷移などを考えていると、ゴチャゴチャしてきてしまいます。
冷静になって、ググったりなど色々なことをして、勉強します。

みまなさん、ゴングラッチェさん、すばやいお返事、指摘ありがとうございます。

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