- PR -

strutsの、ActionFormについて教えてください

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/04/14
投稿数: 1
投稿日時: 2007-04-14 03:01
以下の環境でwebアプリを開発しています。
jdk5.0、
struts1.2.9、
tomcat5.5、
eclipse3.2

strutsのAction・ActionFormの動作について不可解な点があり、投稿させていただきます。以下、簡単にソースを書きます。

<form name="LogForm">←strutsのActionFormと対応したformオブジェクト
<input type="text" name="a"> ←ActionFormに渡す情報1
<input type="text" name="b"> ←ActionFormに渡す情報2
<input type="button" onclick="logsubmit();return false;">←javascriptのsubmit関数で、submit
</form>

<javascript>
function logsubmit(){
window.open("url", "windowId");
document.LogForm.target="windowId";←別ウインドウにsubmit結果を出す
document.LogForm.method="post";
document.LogForm.submit();
}
</javascript>

このようにして、元の画面自体は遷移させずに、結果を別ウインドウに表示しており、Actionにリクエストを何度も投げられるようになっています。

問題のAction側ですが、

LogAction extends Action{
execute(form){
LogForm logForm = (LogForm)form←何度リクエストしても、このlogFormオブジェクトが同じになる。
}
}

簡単にソースを書かせていただきましたが、submitの結果、LogActionにリクエストは飛んでくるのですが、logFormにシステム日付を持っているのですが、中身を見ると、2回目以降も、同じ値が入ってしまっています。このlogFormインスタンスは初回と同じものが破棄されずに使われているのでしょうか?私の想定では、リクエストの度にformインスタンスが生成されるというものだったのですが・・・。tomcat・eclipseを再起動しても変わりません。マシンを再起動すると、1回目だけは新しいインスタンスが入りますが、2回目以降は、また同じインスタンスが入っています。

何か原因をご存知の方はご教示ください。
よろしくお願いします。
jama
常連さん
会議室デビュー日: 2006/09/12
投稿数: 45
投稿日時: 2007-04-14 07:41
オブジェクトプール
reset()メソッド
で検索してみてください。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-04-14 09:26
struts-configのaction-mappingでname属性でアクションフォームを指定していると思いますが、
scope属性を付けていないのでは?
scope属性を付けないとデフォルトではセッションスコープです。
1

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