- - PR -
struts:異なるJSP間で値が共有される件についての質問
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 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> | ||||
|
投稿日時: 2004-02-06 11:54
scope="session" となっているからセッションが続行する限り FormBean が保持されているのではないでしょうか。
scope="request" にしてはいかがでしょうか。 | ||||
|
投稿日時: 2004-02-06 13:03
インギさんありがとうございます。
> scope="session" となっているからセッションが続行する限り FormBean > が保持されているのではないでしょうか。 > scope="request" にしてはいかがでしょうか。 残念ながら、仕様上スコープを request にする事が出来ないのです。 ヘッダ画面から明細画面に遷移する際、ヘッダ画面に入力された値は、まだ 確定していない為、ヘッダ画面の FormBean はしばらく保持する必要がある のです。 この現象が発生した時、インギさんが仰る様に FormBean のスコープの件を 疑ったのですが、 「Session に格納したとしても、FormBean の名称が異なってるから、例え 同一プロパティ(seter/getter)名であっても値は共有されないだろう」 と考えたのですが、この考えは間違っていたのでしょうか? | ||||
|
投稿日時: 2004-02-06 13:28
axisです。 推測ですが 「3」→「4」の遷移でフォワードしていますね。 フォワードした場合「3」に来たリクエストで「4」のFormBeanのプロパティがセットされます。 違っていたらすいません。 [ メッセージ編集済み 編集者: axis 編集日時 2004-02-06 17:21 ] | ||||
1
