2011-09-16 10 views
2

他の開発者の既存のコードを更新しようとしています。私は混乱している行動の問題に直面しています。Struts2サブミットボタンの操作が混乱する

既存:

<s:form name="f2" action="delFood.action"> 

<input type="submit" value="Delete" class="button" onClick="javascript:get_check_value()"/> 

マイコードを更新する:

<input type="file" class="button" id="foodItemFile" name="foodItemFile" value="Browse ..."/>  
<input type="submit" class="button" value="AddFood" onClick="callAddFood();"/> 

マイJavascriptを:私のスクリプトで を、私は、コードに従うことによって自分の行動を提出してみてください。

document.f2.action = "AddFoodAction.action"; 
document.f2.submit(); 

[AddFood]ボタンをクリックすると、[delFood.action]が呼び出されるようです。

食べ物を追加するには、[AddFoodAction.action]アクションを呼び出す前にjavascriptで何かをチェックする必要があります。

制限のため、既存のコードを変更することはできません。私は新しいコードを既存のコードに追加することしかできません。

だから、[AddFoodAction.action]を同じフォームの他のアクションと混同することなくjavascriptから呼び出す方法はありますか?

ありがとうございます。

答えて

1

最後に、私はそうすることで解決します。

1)フォームタグに直接アクションはありません。

<s:form name="f2" method="post" enctype="multipart/form-data"> 

2)削除部は、フォームから直接ではなく

<input type="submit" value="Delete" class="button" onClick="javascript:get_check_value()"/> 

コールJavaScriptから削除アクション、。

document.f2.action = "delFood.action"; 

3)削除部分のように3)を追加します。 Javaスクリプトで必要なものをチェックし、追加アクションを呼び出します。それはうまくいく。

別の解決策:

フォームから直接呼び出される一般的なアクションがあります。このアプローチでは、ボタンに名前を付けて価値を与え、その値をアクションクラスからマップするだけです。そして、1つのアクションからそれらの値を使用して複数のメソッドを区別します。私はcoderanchjavaSampleでこの記事を読んだ。ありがとう。

1

ここにはjavascriptの問題のように見えます。コードを確認してください

document.f2.action = "AddFoodAction.action"; 
document.f2.submit(); 

が実行中です。おそらくdocument.f2が正しく解決していない可能性があります。

このfiddleは、動作するはずであることを示しています。 <input type="submit">にあるonclickハンドラー内のフォームの動作を変更します。

ちょうどお礼申し上げます。document.f2.submit();をしないでください。 <input type="submit">ですので、onclickが終了すると自動的にフォームが送信されます。

+0

チップのおかげで。 yah私は今、document.f2.submit()をもう使用しません。なぜなら、ボタン自体は '' – kitokid