- PR -

struts:異なるJSP間で値が共有される件についての質問

1
投稿者投稿内容
mase
会議室デビュー日: 2003/09/24
投稿数: 6
投稿日時: 2004-02-06 11:27
お世話になっております。 maseと申します。

Struts1.1を使い開発を行っております。
A、B画面といった、別々のJSPに、同じプロパティ名の<html:text>タグが
有る場合、画面へ入力した値が共有されてしまう事はあるのでしょうか?

現在、作成しているアプリケーションで、ヘッダ画面から明細画面に遷移した場合
ヘッダ画面に入力した値が明細画面にセットされる。
といった現象がありました。
(ヘッダ,明細共に、入力部分には<html:text>タグを使っており、
 プロパティ名は"mitumoriCode"と同一名称となっています)

Webで調査したり、周囲の技術者に聞いたりして、アドバイスを頂いたのですが
解決には至りませんでした。
この様な現象について、ご存知の方がいらっしゃいましたら
ポイントやアドバイスを頂ければ幸いです。
よろしくお願い致します。


画面遷移の流れと、Struts-configの一部を添付します。
【 画面遷移 】
1.ヘッダActionInit ヘッダ画面の初期設定を行うアクション

2.ヘッダJSP

3.ヘッダAction どのボタンが押されたを判断しビジネスロジックを呼び出し
次にフォワードする

4.明細ActionInit 明細画面の初期設定を行うアクション

5.明細JSP

6.明細2Action どのボタンが押されたを判断しビジネスロジックを呼び出し
次にフォワードする


【 struts-config 】
<form-beans>
<form-bean name="mitumoriForm"
type="com.xxx.xxx.menu.MitumoriForm"/>
<form-bean name="meisaiForm"
type="com.xxx.xxx.menu.MeisaiForm"/>
</form-beans>

<action-mappings>
<!-- ヘッダ画面 初期設定 -->
<action path="/mitumori/mitumoriInit"
name="mitumoriForm"
type="com.xxx.xxx.mitumori.MitumoriInitAction"
scope="session">
<forward name="success" path="/mitumori/Mitumori.jsp"/>
</action>

<!-- ヘッダ画面 -->
<action path="/mitumori/mitumoriAfter"
name="mitumoriForm"
type="com.xxx.xxx.mitumori.MitumoriAction"
input="/mitumori/Bhamiadh.jsp"
scope="session">
<forward name="success" path="/mitumori/meisaiInit.do"/>
</action>

<!-- 明細画面 初期設定 -->
<action path="/mitumori/meisaiInit"
name="meisaiForm"
type="com.xxx.xxx.mitumori.MeisaiInitAction"
scope="request">
<forward name="success" path="/mitumori/Meisai.jsp"/>
</action>

<!-- 明細画面 -->
<action path="/mitumori/meisaiAfter"
name="meisaiForm"
type="com.xxx.xxx.mitumori.MeisaiAction"
input="/mitumori/Meisai.jsp"
scope="request">
<forward name="success" path="/mitumori/mitumoriInit.do"/>
</action>
</action-mappings>
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-02-06 11:54
scope="session" となっているからセッションが続行する限り FormBean が保持されているのではないでしょうか。
scope="request" にしてはいかがでしょうか。
mase
会議室デビュー日: 2003/09/24
投稿数: 6
投稿日時: 2004-02-06 13:03
インギさんありがとうございます。

> scope="session" となっているからセッションが続行する限り FormBean
> が保持されているのではないでしょうか。
> scope="request" にしてはいかがでしょうか。

残念ながら、仕様上スコープを request にする事が出来ないのです。
ヘッダ画面から明細画面に遷移する際、ヘッダ画面に入力された値は、まだ
確定していない為、ヘッダ画面の FormBean はしばらく保持する必要がある
のです。

この現象が発生した時、インギさんが仰る様に FormBean のスコープの件を
疑ったのですが、
「Session に格納したとしても、FormBean の名称が異なってるから、例え
同一プロパティ(seter/getter)名であっても値は共有されないだろう」
と考えたのですが、この考えは間違っていたのでしょうか?
axis
会議室デビュー日: 2003/10/30
投稿数: 9
投稿日時: 2004-02-06 13:28
引用:

maseさんの書き込み (2004-02-06 11:27) より:
【 画面遷移 】
1.ヘッダActionInit ヘッダ画面の初期設定を行うアクション

2.ヘッダJSP

3.ヘッダAction どのボタンが押されたを判断しビジネスロジックを呼び出し
次にフォワードする

4.明細ActionInit 明細画面の初期設定を行うアクション

5.明細JSP

6.明細2Action どのボタンが押されたを判断しビジネスロジックを呼び出し
次にフォワードする


【 struts-config 】
<form-beans>
<form-bean name="mitumoriForm"
type="com.xxx.xxx.menu.MitumoriForm"/>
<form-bean name="meisaiForm"
type="com.xxx.xxx.menu.MeisaiForm"/>
</form-beans>

<action-mappings>
<!-- ヘッダ画面 初期設定 -->
<action path="/mitumori/mitumoriInit"
name="mitumoriForm"
type="com.xxx.xxx.mitumori.MitumoriInitAction"
scope="session">
<forward name="success" path="/mitumori/Mitumori.jsp"/>
</action>

<!-- ヘッダ画面 -->
<action path="/mitumori/mitumoriAfter"
name="mitumoriForm"
type="com.xxx.xxx.mitumori.MitumoriAction"
input="/mitumori/Bhamiadh.jsp"
scope="session">
<forward name="success" path="/mitumori/meisaiInit.do"/>
</action>

<!-- 明細画面 初期設定 -->
<action path="/mitumori/meisaiInit"
name="meisaiForm"
type="com.xxx.xxx.mitumori.MeisaiInitAction"
scope="request">
<forward name="success" path="/mitumori/Meisai.jsp"/>
</action>

<!-- 明細画面 -->
<action path="/mitumori/meisaiAfter"
name="meisaiForm"
type="com.xxx.xxx.mitumori.MeisaiAction"
input="/mitumori/Meisai.jsp"
scope="request">
<forward name="success" path="/mitumori/mitumoriInit.do"/>
</action>
</action-mappings>



axisです。
推測ですが
「3」→「4」の遷移でフォワードしていますね。
フォワードした場合「3」に来たリクエストで「4」のFormBeanのプロパティがセットされます。

違っていたらすいません。


[ メッセージ編集済み 編集者: axis 編集日時 2004-02-06 17:21 ]
1

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