2017-03-20 7 views
0

私はボタンクリックでアクションを設定するフォームを持っています。フォームを送信すると、私はデータをコントローラに送信し、コントローラはデータを処理してページに戻ります。jqueryフォームとの混乱アクションスプリングmvc thymeleaf

私はhttp://localhost/testで始まります...いくつかのデータを入れてボタンをクリックすると、データはhttp://localhost/ablehnenに送信され、今ではブラウザのhttp://localhost/ablehnenにあります。もう一度ボタンをクリックすると、ブラウザはhttp://localhost/ablehnen/ablehnenに間違っています!誰でも私に言うことができる、なぜ私はhttp://localhost/ablehnen/ablehnenに行く???どうすればこの問題を解決できますか?

<form id="theForm" class="form-horizontal" data-toggle="validator" method="POST" role="form" th:object="${intProvDefApproval}"> 
... 
</from> 

<button type="button" id="ablehnen" class="btn btn-danger" th:text="#{ablehnen}"></button> 


$("#ablehnen").click(function() { 
$("#theForm").prop('action', "ablehnen"); 
$("#theForm").submit(); 
} 
+0

はあなたのコントローラからいくつかのコードを追加することはできますか?関数ablehnenは何をしていますか?コントローラはあなたのURLの変更を担当します。 –

+0

'@RequestMapping(パス= "/テスト"、方法= RequestMethod.POST) パブリック文字列試験(@ModelAttribute( "intProvDefApproval")IntProvDef4Approval intProvDefApproval、 モデルモデル、ロケールロケール){ リターン( "テンプレート/編集") ; } ' ...' @RequestMapping(パス= "/ ablehnen"、メソッド= RequestMethod.POST) パブリック文字列ablehnen(@ModelAttribute( "intProvDefApproval")IntProvDef4Approval intProvDefApproval、 モデルモデル、ロケールロケール) { リターン( "templates/edit"); } ' – Thomas

答えて

0

クリックイベントが発生するたびに、文字列 'ablehnen'がアクションの最後に追加されます。 jqueryからではなく、フォーム自体に属性action = "ablehnen"を設定してみてください。

+0

問題は、私は異なるアクションを持つページに複数のボタンがあることです。私はフォームでそれを設定することはできません – Thomas

0

は、あなたがルートからの相対パスを使用して試すことができかもしれませ...

<form id="theForm" class="form-horizontal" data-toggle="validator" method="POST" action="ablehnen" role="form" th:object="${intProvDefApproval}"> 

の下を参照してください。 $( "#theForm")。prop( 'action'、 "/ ablehnen"); または のroot_path = "http://localhost" action_path =のroot_path + "/ ablehnen"

$( "#のtheForm")小道具( 'アクション'、action_path)。私はバグが...私は、コントローラのマッピングを忘れてしまった...コントローラはadditionlマッピング@RequestMapping(「/ myController」)を持っている..しかし、私はありません持ってい

よろしく、 Krishan

0

それは

正しいエラーなしで最初klickで働く理由考え方は次のとおりです。

$("#theForm").prop('action', "/myController/ablehnen");