如何从Spring表单传递参数到@RequestParam?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Spring表单传递参数到@RequestParam?相关的知识,希望对你有一定的参考价值。

有一个Spring MVC应用程序,两个实体 - Player和PlayerDetails,想要将PlayerDetails添加到现有的Player,但为此我需要通过参数传递一个玩家ID。但我不能从JSP页面传递一个paremeter,我正在使用Spring表单。仍然得到“必需字符串参数'playerId'不存在”。我已经在JSP页面上获得了值,但问题是将其通过表单传递给方法。当我从方法中删除@RequestParam,并在方法内部硬编码“theInt2”时一切正常。

PlayerDetailsController.class

  @PostMapping("/savePlayerDetails")
    public String savePlayerDetails(@RequestParam("playerId") String theInt,
                    @ModelAttribute("details") PlayerDetails playerDetails){

     int theInt2 = Integer.parseInt(theInt);

     playerDetailsService.savePlayerDetails(theInt2, playerDetails);

     return "redirect:/players/list";
    }

细节,form.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<form:form action="savePlayerDetails" modelAttribute="details" method="POST">

    <form:hidden path="id"/>
    Date of birth: <form:input path="dateOfBirth"/>
    Email: <form:input path="email"/>
    Preferred Foot: <form:input path="preferredFoot"/>
    Short info: <form:input path="shortInfo"/>
    <br><br>
    ${player.playerId}  <!-- just for test, player id is shown here -->

<input type="submit" value="Save" class="save" />
</form:form>
答案

你没有从你的表单传递playerId,添加另一个输入到你的形式如下

<input type="hidden" name="playerId" value="${player.playerId}"/>

要么

<form:hidden path="playerId"/> 

也应该工作

以上是关于如何从Spring表单传递参数到@RequestParam?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用spring boot将数据从一个html表单传递到多个表

如何将参数从脚本传递到 html 表单值

在Spring boot中,如何将表单动作中的jsp表单输入的值作为参数传递

如何将参数从我的表单操作传递到视图?姜戈

使用 Microsoft Access 中的两个表单将参数从一个组合框传递到另一个组合框

访问:从表单传递参数到查询