スコープとjspとbeanの関係についてわかりやすく教えてください。



<経緯>
JSPで作られたプログラムがある。

ほんの少しだけいじりたい。
(具体的にはデータベース(?)を参照して表示している項目を増やしたい。)

<bean:write name="hoge" property="id" scope="session" />
<bean:write name="hoge" property="name" scope="session" />

のあたりのコードがそれっぽかったのでコピーしてpropertyの中身を書き換える。

システムエラー

データ入力時のpropertyと同じにしているのにエラー?と思い調べる。

struts-config.xmlでbeanを調整していると判明。

ところでbeanってなに?

回答の条件
  • 1人2回まで
  • 登録:2007/10/28 15:01:07
  • 終了:2007/11/04 15:05:03

回答(2件)

id:KUROX No.1

KUROX回答回数3542ベストアンサー獲得回数1402007/10/28 15:24:08

ポイント35pt

http://www.stackasterisk.jp/tech/java/strutsSec01_04.jsp

strutsの使い方はご存知ですか?

id:petem

恥ずかしながら、全く分かっていません。


FTPから

いただいたリンク先の

3: <form-beans>

4: <form-bean name="loginForm" type="jp.co.itboost.struts.LoginForm" />

5: </form-beans>

の4行目type="jp.co.itboost.struts.LoginForm"にあたるファイルを開いてみたのですが文字化けしました。

sqlのように、サーバ上にデータベースがあり、それを読みに行っているのでしょうか?

2007/10/28 16:16:48
  • id:Mook
    Struts を利用されているなら、JSP の変更をするためには対応する Form と Action クラスも併せて変更が必要です。
  • id:petem
    >対応する Form と Action クラスも併せて変更が必要

    基本的過ぎて申し訳ないのですが、.classの拡張子ファイルが開けないのです。
  • id:petem
    ありがとうございます。
    以下はKUROXさんの張ってくれたリンクにあったフォームbeanとアクションクラスですが、.javaの部分が見当たりません。
    (私のほうのstruts-config.xmlにも見当たりません。)

    この中で
    >対応する Form と Action クラスも併せて変更が必要
    とはどの部分になりますでしょう。
    それとも変更部分はここから読み取るわけではないのでしょうか。


    1: <struts-config>
    2: :
    <!-- フォームBeanの登録 開始 -->
    3: <form-beans>
    4: <form-bean name="loginForm" type="jp.co.itboost.struts.LoginForm" />
    5: </form-beans>
    <!-- フォームBeanの登録 終了 -->
    6: :
    <!-- アクションクラスの登録 開始 -->
    7: <action-mappings>
    8: <action path="/login" type="jp.co.itboost.struts.LoginAction" name="loginForm">
    9: <forward name="success" path="/jsp/loginSuccess.jsp" />
    10: <forward name="error" path="/jsp/loginForm.jsp" />
    11: </action>
    12: </action-mappings>
    <!-- アクションクラスの登録 終了 -->
    13: :
    14: </struts-config>
  • id:Mook
    Form クラス
    jp.co.itboost.struts.LoginForm.java
    Action クラス
    jp.co.itboost.struts.LoginAction.java
    がありませんか。

    もともとがどういう素性のものかわかりませんが、もし上記に当たるソースがないとしたら、コンパイルされたモジュールのみが供給されている可能性があります。
    その場合は(簡単には)内容の変更をすることが出来ません。


    編集するのは Java の拡張子がついたファイルです。
    Class はコンパイルの結果生成されるファイルなので、直接変更はしません。

    基本的には、Form クラス(データの受け渡し先)に読みたいデータを追加し、get* と set* 関数を追加します(*は変数名)。
    JSP が呼ばれる直前に動作する Action クラスで、この変数に読みたいデータを設定しておきます。
    ここらへんが、大まかな変更点です。

    詳細は答え切れませんので、コメントにて失礼しました。もう見られたかもしれませんが、一度
    http://www.atmarkit.co.jp/fjava/rensai3/struts01/struts01_1.html
    等に目を通してはどうでしょうか。
  • id:petem
    ありがとうございます。
    ちなみに、サーバの中に.java拡張子のファイルは存在しませんでした。


    これは
    >コンパイルされたモジュールのみが供給されている
    ということ(?)。


    となると開発元に依頼しないとダメでしょうか。。。
    Mookさんありがとうございます。

    ぜひ回答欄に書き込んでいただきポイントをお受け取りください。
  • id:Mook
    検証も調査もしていない、思いつきだけの無責任なコメントですので、
    ポイントはお気になさらず。

    お使いのものは、公開されているものなのですか?
    差し支えなかったら、参照元を明らかにした方が回答しやすいと思います。
    そちらで何か回答できるようでしたら、回答させていただきます。

    公開できない素性のものでしたら、作成先に問い合わせてはどうでしょうか。
  • id:petem
    ゼロから作成したもので参照元が公開できず申し訳ありません。


    先方に問い合わせてみます。
    ありがとうございます。
  • id:KUROX
    >(具体的にはデータベース(?)を参照して表示している項目を増やしたい。)

    DBの内容をJSPで表示してると思うのですが、BeanとDBとは直接つながってなくて
    Javaのソース中でロジックで書いてあると予想します。

    strutsは、DBとの関連付けの部分はプログラムで処理されています。

    scope="session"
    はセッション変数として、hogeというような名前のBeanに入ってるということです。
    セッション変数に入れてるのは、この場合、おそらくプログラムです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません