- PR -

strutsでframeで構成されたページでの結果受け取り

1
投稿者投稿内容
もなむ
会議室デビュー日: 2004/06/08
投稿数: 16
投稿日時: 2004-06-08 22:02
皆さんこんにちは。

strutsアプリケーションで、結果をframe構成にした場合の処理についてお聞きしたいことがあります。

通常のstrutsの処理の流れでは、
コード:
  ┏━━━━━━┓    ┏━━━━━━┓    ┏━━━━━┓    
  ┃ 入力ページ ┃ → ┃ActionClass ┃ → ┃結果ページ┃    
  ┗━━━━━━┛    ┗━━━━━━┛    ┗━━━━━┛    


1)入力ページから受け取った値をActionClassで処理し、
2)その結果を
コード:
HttpServletRequest#setAttribute()

でリクエストに設定し、
3)結果ページ(jsp)で
コード:
HttpServletRequest#getAttribute()

によって取得することで
  表示などの処理を行っているかと思います。

今回お聞きしたいのは、この結果ページがframesetによって分割されている場合に、
ActionClassでの処理結果をどのように子フレームで利用するかということです。
コード:
  ┏━━━━━━┓    ┏━━━━━━┓    ┏━━━━━━━━━┓  
  ┃入力ページ  ┃ → ┃ActionClass ┃→  ┃結果ページ(Frame) ┃  
  ┗━━━━━━┛    ┗━━━━━━┛    ┃┏━━━━━━┓  ┃  
                                          ┃┃子フレーム1┃  ┃  
                                          ┃┗━━━━━━┛  ┃  
                                          ┃┏━━━━━━┓  ┃  
                                          ┃┃子フレーム2┃  ┃  
                                          ┗┗━━━━━━┛━┛  


このような構成にした場合、
コード:
HttpServletRequest#setAttribute()

では
値を取得できるのは「結果ページ」だけになってしまいます。
ActionClassで
コード:
HttpSession#setAttribute()

を使用する事で子フレームで値を取得
することは可能だと思いますが、HttpSessionにはあまり値をセットしたくありません。

何か有効な方法などはありますでしょうか?


山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-06-08 22:18
一番シンプルなのはフレームでなくて RequestDispatcher.include() で画面を構成することです。

どうしてもフレームで値を受け渡したいのであればフレーム自体を JSP で表現して、子フレームにクエリ文字列でパラメータを渡すというのはいかがでしょうか?
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2004-06-08 22:33
ActionFormをフレーム全体で共有して利用して値を共有するのがシンプルですかね。
どちらにしろSessionに積むことになりますが。
どうしてもというのであればJavaScriptを駆使してTOPフレームに値を代入するというやり方もできます。
もなむ
会議室デビュー日: 2004/06/08
投稿数: 16
投稿日時: 2004-06-08 22:55
インギさん、Anthyhimeさん、ご回答ありがとうございます。

やはりHTTPセッションに値を入れていくのはちょっと怖いので、
クエリ文字列を使う方向で検討しようと思います。

struts-htmlのtaglibを調べていると、html:frameタグの
name属性を利用するとクエリ文字列を勝手に構成してくれるようなので、
これの利用も検討しようと思います。

ありがとうございました。
Tom
常連さん
会議室デビュー日: 2004/06/07
投稿数: 23
お住まい・勤務地: 東京都
投稿日時: 2004-06-09 09:41
的外れかもしれませんが
フレームでなければならないという制約がなければ
struts-tilesを使ってみてはどうでしょう?

もなむ
会議室デビュー日: 2004/06/08
投稿数: 16
投稿日時: 2004-06-10 18:08
Tomさんご回答ありがとうございます。

tilesはちょっとしか調べていないのですが、
・上フレームで検索条件を入力して、下フレームに一覧を表示する。
・検索条件を表示したまま一覧のみスクロールする。

といった使い方ができそうに無かった(発見できなかった)ため、
frameにしてしまいました。
taxico
会議室デビュー日: 2004/05/26
投稿数: 4
お住まい・勤務地: Tokyo - Saitama
投稿日時: 2004-06-11 09:13
使えるブラウザが限定されてしまいますが、CSSの「overflow:auto」を使うとhtmlの一部をスクロール可能にできます。

struts-tilesで生成される箇所を overflow:auto 領域で表示させればOKかと思います。

http://www5e.biglobe.ne.jp/~access_r/hp/css/css_look_001.html
1

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