2017-09-03 5 views
0

私は、JSPページのボタンをクリックした後にPOSTメソッドを実行したいSpring MVCアプリケーションで作業します。ランディングページは、私が希望、JSPボタンからSpring MVCでメソッドを実行する

enter image description here

私はGenerate Addressボタンをクリックした後、Generate Addressボタンをクリックした後

@PostMapping(value = "/generateAddress") 
    public String generateAddress() {  
     walletService.generateAddress(); 
     return "redirect:/"; 
    } 

What I would like to achieve

を次の春メソッドを実行したい、のように見えますgenerateAddressメソッドへのPOSTリクエストを作成するようにします。

ボタンのコードをJSPページは、

<body class="page_container"> 
<div class="wallets_page"> 

    <form id="mnfrm" action="/" method="get" target="_blank"> 
     <div class="buttons_box"> 

      <button type="button" class="btn btn-default btn-lg active"> 
       Generate address 
      </button> 

      <button type="submit" class="btn btn-default btn-lg active" <%= wallets.isEmpty() ? "disabled" : ""%> 
        onclick="setFormAction('mnfrm', '/balance')">Balance 
      </button> 
      <button type="submit" class="btn btn-default btn-lg active" <%= wallets.isEmpty() ? "disabled" : ""%> 
        onclick="setFormAction('mnfrm', '/transactions')">Transactions 
      </button> 
      <button type="submit" class="btn btn-default btn-lg active" <%= wallets.isEmpty() ? "disabled" : ""%> 
        onclick="setFormAction('mnfrm', '/sendMoney')">Send money 
      </button> 
     </div> 

     <div class="addresses_box"> 
      <label for="addressId">Address</label> 
      <select id="addressId" name="id" class="form-control"> 
       <c:forEach var="wallet" items="${wallets}"> 
        <option value="${wallet.id}"><c:out value="${wallet.address}"></c:out></option> 
       </c:forEach> 
      </select> 
     </div> 
    </form> 
</div> 

私は動作しませんbuttononclickを設定しようとしています。

<button type="button" class="btn btn-default btn-lg active"> 
      Generate address 
    </button> 

どのように正しく行うことをお勧めしますか?

More Info

これは私がボタンIDと組み合わさAjax POSTリクエストでこれを解決した、方法はmain.jspのランディングページを開く

@GetMapping(value = "/") 
    public String showBitcoinWallet(final Model model) { 
     List<WalletInfo> wallets = walletService.getAllWallets(); 
     model.addAttribute("wallets", wallets); 
     return "main"; 
    } 
+1

達成したいことを明確にすることはできますか?あなたが(ページをリロードせずに)ajax呼び出しをしたいなら、2番目の投稿が正しい方法です。一方、通常のポストコール(ページをリロードするフォーム提出)を行いたい場合は、コントローラコードを修正する必要があります。このリンクを参照してくださいhttps://spring.io/guides/gs/handling-form-submission/ – Amardeep

+0

私は質問をより簡単にし、達成したいことを明確にしました – Arefe

+1

その後、前のコメントに投稿したリンクに従ってください。 – Amardeep

答えて

0

あります。解決策は非常に簡単で、うまくいくまでにはmvn cleanが必要でした。

アドレスボタン

<button id="genAddress" type="button" class="btn btn-default btn-lg active"> 
       Generate address 
      </button> 

Ajax POST要求、

<script> 
    $("#genAddress").click(function() { 
     $.ajax({ 
      type: "POST", 
      url: 'generateAddress', 

      success: function (data) { 
       console.log("Wallet address generation success!") 
      }, 

      failure: function (errMsg) { 
       console.log(errMsg.toString()) 
      } 
     }); 
    }); 
</script> 

私たちはどのようなデータを提供することなくPOST要求を行うことができると仮定、しかし、それを行う方法について確認されませんでした。 [OK]を、単にAjax POST要求からデータ提供コードを削除:)

を以前に設け、この方法SpringコントローラからPOST要求 を実行するように。

@PostMapping(value = "/generateAddress") 
    public String generateAddress() { 

     walletService.generateAddress(); 
     return "redirect:/"; 
    } 
関連する問題