Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JSP按钮在SpringMVC中执行方法_Java_Spring_Jsp_Spring Mvc - Fatal编程技术网

Java 从JSP按钮在SpringMVC中执行方法

Java 从JSP按钮在SpringMVC中执行方法,java,spring,jsp,spring-mvc,Java,Spring,Jsp,Spring Mvc,我使用的是SpringMVC应用程序,我希望在单击JSP页面中的按钮后执行POST方法。登录页看起来像 单击生成地址按钮后,我想执行下面的Spring方法 @PostMapping(value = "/generateAddress") public String generateAddress() { walletService.generateAddress(); return "redirect:/"; } 我想要实现的目

我使用的是SpringMVC应用程序,我希望在单击JSP页面中的按钮后执行
POST
方法。登录页看起来像

单击
生成地址
按钮后,我想执行下面的Spring方法

    @PostMapping(value = "/generateAddress")
    public String generateAddress() {    
        walletService.generateAddress();
        return "redirect:/";
    }
我想要实现的目标

单击
生成地址
按钮后,我想向
生成地址
方法发出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>
有没有关于如何正确做的建议

更多信息

这是打开
main.jsp的登录页的方法

@GetMapping(value = "/")
    public String showBitcoinWallet(final Model model) {
        List<WalletInfo> wallets = walletService.getAllWallets();
        model.addAttribute("wallets", wallets);
        return "main";
    }
@GetMapping(value=“/”)
公共字符串showBitcoinWallet(最终型号){
List wallets=walletService.getAllWallets();
model.addAttribute(“钱包”,钱包);
返回“main”;
}

我将按钮id和
Ajax
POST请求结合起来解决了这个问题。解决方案非常简单,我需要一个
mvn clean
,然后才能解决问题

地址按钮

<button id="genAddress" type="button" class="btn btn-default btn-lg active">
                Generate address
            </button>
我假设我们可以在不提供任何数据的情况下发出
POST
请求,但是,我不确定如何做。好的,只需从
Ajax
POST请求中删除数据提供代码:)

如前所述,这是执行
POST
请求的方法 从
弹簧
控制器

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

        walletService.generateAddress();
        return "redirect:/";
    }

你能说明你想要实现什么吗。如果您想进行ajax调用(无需重新加载页面),那么您的第二篇文章就是正确的方法。另一方面,如果您想进行正常的post调用(表单提交将重新加载页面),则需要更正控制器代码。请参考此链接我使问题变得更简单,并澄清了我想要实现的目标。您应该关注我在上一篇评论中发布的链接。我通过
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>
@PostMapping(value = "/generateAddress")
    public String generateAddress() {

        walletService.generateAddress();
        return "redirect:/";
    }