- PR -

requestについて

1
投稿者投稿内容
迷い猫
常連さん
会議室デビュー日: 2004/08/13
投稿数: 30
投稿日時: 2005-05-27 10:57
みなさんこにちわ。久しぶりに投稿致します。

Java/Strutsで開発しています。
requestについて質問なんですが、私が今やっていることは、
検索結果一覧表の作成中。

- 質問 ---------------------------------------------------------------

InitActionでgetter/setterに入れた値(Listになっている)を
requestで@のjspに渡します。
次に@のjsp内でiframeを使用してAのjspを呼び出します。
そこで、InitActionで渡したrequestの値をAのjspで取得したいのですが、
sessionを使用すると、複数同じ画面を開いた際にデータがごちゃごちゃになっていします。sessionを使用せずにiframeで呼び出されたjspにrequestの値を渡す良い方法が
ありましたら、ご教授を宜しくお願い致します。

----------------------------------------------------------------------
※@のjsp(検索結果一覧のヘッダ・フッタ)
※Aのjsp(検索結果一覧の明細)


環境:
WindowsXP
Tomcat5.0
Eclipce2.1
Struts1.1
j2sdk1.4.1_02

会議室デビュー日: 2004/10/12
投稿数: 14
投稿日時: 2005-05-27 12:30
ちょっとトリッキーなやり方ですが、2つほど案を提供します。

[案1]
iframeのsrc属性に検索条件のクエリーストリングを付加する方法。

[案2]
@のjspのAction時に検索条件のハッシュ値を作成し、
そのハッシュ値をキーにしてSessionに検索結果(検索条件の方がいいかも)を格納。
@のjspのiframeのsrc属性に検索条件のハッシュ値付加して、そのハッシュ値から
session内の検索結果(または検索条件)を取り出す方法。

※検索結果はlist構造でsessionが肥大化する恐れがあるので、
検索条件を格納したほうがいいかもしれません。

デメリット:使われなくなった検索結果(または検索条件)も破棄するような方法を入れる必要あり。
迷い猫
常連さん
会議室デビュー日: 2004/08/13
投稿数: 30
投稿日時: 2005-06-02 18:05
柳さんご回答ありがとうございます。
返信が遅くなってしまい申し訳ありません。

案1は試してみたのですが、
logic.IterateTagを使用してrequestの値を繰り返し表示するようなつくりになっているのでそこでエラーになってしまいました。

エラー内容=========================================Start

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません

JSPファイル: /jsp/pages/test.jsp の中の行: 26でエラーが発生しました

生成されたサーブレットのエラーです:
[javac] Compiling 1 source file

C:\\Program Files\\eclipse\\workspace\\nde\\work\\org\\apache\\jsp\\jsp\\pages\\test_jsp.java:107: org.apache.struts.taglib.logic.IterateTag の setName(java.lang.String) は (jp.co.model.entity.testentity) に適用できません。
_jspx_th_logic_iterate_0.setName(testentity);

エラー内容=========================================End

案2はハッシュ値の作成方法がわからず、まだ試していません。



[ メッセージ編集済み 編集者: 迷い猫 編集日時 2005-06-06 10:04 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-06-02 23:25
1の案って、
引用:

logic.IterateTagを使用してrequestの値を繰り返し表示するようなつくりになっているのでそこでエラーになってしまいました。


ロジックタグで参照するリクエストの値を、
URLのクエリを参照して作ってみては?という案だと思います。

iframeに指定するパスが/xxx.doなのか/xxx.jspなのか知りませんが、
JSPでループするして参照するエンティティを
URLのクエリーストリングをキーにデータベースから取得して、
画面を作成してみてはという意味です。

そもそもどんなソースになっているのか、回答者は全然わからないので、
柳さんみたいな回答しかできないと思いますよ。
そんな状態で「案1じゃ作りが合わないから動きません」じゃ
誰も答えなんてわかりませんよ。
迷い猫
常連さん
会議室デビュー日: 2004/08/13
投稿数: 30
投稿日時: 2005-06-06 17:56
柳さん、かつのりさんご回答ありがとうございました。

お二人のおっしゃってるようなやり方で、
iframeのsrcに検索条件をクエリストリングをセットして
Actionを呼び、そこで検索をして情報の表示というように
しました。

今までのやり方 ============================================START

 呼び出し元画面

  ↓ 検索・表示に必要な情報をクエリストリングで渡す

 InitAction(ここで情報の検索)
 
  ↓ JSPの呼び出し(検索結果をRequestで渡す)

 ヘッダ・フッタJSPの表示

  ↓ iframeで一覧JSPの呼び出し(検索結果Requestをクエリストリングで渡す)

 一覧JSPの表示(検索結果Requestを取得出来ず、エラー)

今までのやり方 ============================================END

修正後のやり方 ============================================START

 呼び出し元画面

  ↓ 検索・表示に必要な情報をクエリストリングで渡す

 InitAction(ヘッダ・フッタの表示に必要な情報の取得)

  ↓ JSPの呼び出し(検索条件をRequestで渡す)

 ヘッダ・フッタJSPの表示

  ↓ iframeでActionの呼び出し(検索条件をクエリストリングで渡す)

 Action(取得した検索条件より、情報の取得)
 
  ↓ 一覧JSPの呼び出し(検索結果をRequestで渡す)

 一覧JSPの表示(検索結果Requestを取得し表示)

修正後のやり方 ============================================END

わかりづらい質問にご回答していただきありがとうございました。
お二人の回答よりヒントを得てなんとか出来ました。
感謝です!!

また、質問することがあるかと思いますが、その際には宜しくお願い致します。
1

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