ボタンクリックでStruts2アクションクラスに送信されるjspフォームがあります。アクション クラスから、制御はサービス (java) クラスと DAO (Java iBatis) クラスに流れます。DAO クラスは、oracle pl/sql プロシージャを呼び出します。
問題:
Action/Service/DAO & PL/SQL プロシージャのログ ステートメントを確認すると、1 回のボタン クリックで 2/3 回呼び出されていることがわかります。実行回数は非常にランダムですが、1 回ではありません (ステージング サーバーにデプロイされたコードのみ)。
不思議なことに、この機能は、コードが開発および実稼働サーバー (Websphere 7.1) にデプロイされている場合に正常に機能します (1 回だけ呼び出されます)。ステージング サーバーにデプロイされたときとまったく同じコード (EAR) が、この複数送信エラーに直面しています。
さまざまなブラウザー (IE 8 & IE 9) から試しましたが、この問題は、ステージング サーバーにデプロイされたアプリケーションにアクセスしようとしたときにのみ発生します。
当社のすべての開発、ステージング、本番 Websphere サーバーは、同じバージョンとパッチ レベルです。
送信に使用する JavaScript コードを次に示します。
$(document).ready(function() {
mask();
var config = "${returnedCString}";
var f = "${flagS}";
if (f == "1"){
$.post('<%=request.getContextPath()%>/applyComp'
,function(data){
unmask();
$("#impactForm").attr('action','<%=request.getContextPath()%>/CompareForm');
$("#impactForm").submit();
}
);
}
}
問題は、次の Struts Action への POST が複数回発生していることです。
$.post('<%=request.getContextPath()%>/applyComp'