【问题标题】:How to pass parameter to @RequestParam from Spring form?如何从 Spring 表单将参数传递给 @RequestParam?
【发布时间】:2018-03-05 14:32:30
【问题描述】:

有一个 Spring MVC 应用程序,两个实体 - Player 和 PlayerDetails,想将 PlayerDetails 添加到现有 Player,但为此我需要通过参数传递一个玩家 ID。 但是我无法从 JSP 页面传递参数,我使用的是 Spring 表单。仍然得到“必需的字符串参数'playerId'不存在”。 我已经在 J​​SP 页面上获得了该值,但问题是通过表单将其传递给方法。 当我从方法中删除 @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";
    }

details-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>

【问题讨论】:

  • 将某些内容打印到屏幕上与使其成为表单的一部分不同。
  • 知道,只是打印它以检查我是否将其传递到该 JSP 页面。

标签: java spring jsp spring-form


【解决方案1】:

您没有从表单中传递playerId,请向您的表单添加另一个输入,如下所示

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

<form:hidden path="playerId"/> 

应该也可以

【讨论】:

  • 用那个解决方案解决了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-03-08
  • 2014-01-14
  • 2015-07-10
  • 1970-01-01
  • 2014-07-23
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多