如何将参数从 Spring 表单传递给@RequestParam?
How to pass parameter to @RequestParam from Spring form?
有一个 Spring MVC 应用程序,两个实体 - Player 和 PlayerDetails,想将 PlayerDetails 添加到现有的 Player,但为此我需要通过参数传递一个播放器 ID。
但是我无法从 JSP 页面传递参数,我在其中使用 Spring 表单。仍然得到 "Required String parameter 'playerId' is not present"。
我已经在 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 MVC 应用程序,两个实体 - Player 和 PlayerDetails,想将 PlayerDetails 添加到现有的 Player,但为此我需要通过参数传递一个播放器 ID。 但是我无法从 JSP 页面传递参数,我在其中使用 Spring 表单。仍然得到 "Required String parameter 'playerId' is not present"。 我已经在 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"/>
应该也可以