送信ボタンをダブルクリックした後に発生するイベントと、ボタンを 2 回クリックした後に発生するイベントを比較すると、論理フローの点でどのような違いがありますか?
私は Struts 1 アプリケーション (汚い設計) を持っていますが、ダブルクリックで実際に何が起こっているのか理解できません。
JSP は次のようになります。Add xItem をクリックすると、アクション クラスの doAdd() メソッドが呼び出されます (この場合、doAdd メソッドで str は null になります)。これは、xItemAdd.jsp に転送されます。
xItemAdd.jsp には、いくつかのチェックボックスとロード ボタンを含むプライマリ フォームが含まれています。ロードをクリックすると、選択したチェックボックスとリストボックスの値がフェッチされ、セッション属性に入れられ、再び xItemAdd.jsp に転送される場所で doAdd が呼び出されます。
xItemAdd.jsp には、対応するチェックボックスがチェックされている場合にフォームを表示するためのスクリプトレットが含まれています。そのため、1 と 3 のチェックボックスが選択され、[読み込み] がクリックされた場合、Form1 と Form3 が表示されるようになりました。
<% for(int i=0;i<selmsgs.size();size++)
{Systeml.out.println("i :"+i +"size "+selmsgs.size());
...%>
これはアクションクラスのスニペットです
Class MyAction
{...
public Object doAdd(.......)
{ System.out.println("Add method :");
String[] str=request.getParameter("SelectionList");
ArrayList<String>[] mylist=request.getParameter("CheckedValues").split(',');
//Allowing duplicate values to be added in mylist
if(str!=null&&str.equals("true")
request.getSession.setAttribute("IsLoaded","false");
if(str!=null)
{
request.getSession.setAttribute("ObjectList",mylist);
request.getSession.setAttribute("IsLoaded","true");
}
return SUCCESS;
}
}
図 2 の [読み込み] ボタンを 1 回クリックすると、予想どおりビューが図 3 に変わり、もう一度クリックすると (選択したチェックボックスの) フォームが読み込まれ、図 3 のままになります。ただし、[読み込み] ボタンをダブルクリックした場合奇妙な動作があり、選択した各フォームが繰り返されて表示されます。そのため、図 3 はフォーム 1、フォーム 3 のようになり、再びフォーム 1、フォーム 3 になります。
doAdd メソッドが返された後、JSP が 2 回呼び出され、図 3 のように JSP の印刷行が次のように出力されます。
i: 0 size :2
i:0 size :1
i:1 size : 2
2 つのスレッドが JSP スクリプトレットを実行しているように見える
ここで読み込みボタンをダブルクリックした場合と、2 回同時にクリックした場合の動作の違いを説明していただけますか?
ロードボタンをダブルクリックした後、実際には何が起こりますか?