下面是来自控制器的代码,我旨在确保它从前端接口接收两个输入参数(名称和代码)。
该页面在提交表单中包含两个参数,即“名称”和“代码”。
@RequestMapping(method = RequestMethod.POST)
public String transfer(@RequestParam(name = "name") String name,
@RequestParam(name = "code") String code,
Errors errors, RedirectAttributes redirectAttributes) {
try {
User userToBeTransferred = usersRepository.findByName(name);
userToBeTransferred.setTransferred(true);
Region regionOfTransference = regionsRepository.findByCode(code);
regionOfTransference.setPopulationNumber(regionOfTransference.getPopulationNumber() + 1);
userToBeTransferred.setRegion(regionOfTransference);
usersRepository.save(userToBeTransferred);
regionsRepository.save(regionOfTransference);
return "redirect:/section/users/new";
} catch (IllegalArgumentException e) {
return "htmlPageOne";
}
}
首页表格:
<form class="form-horizontal" method="POST" action="/section/users/new" th:object="${user}">
<input type="hidden" th:field="*{id}"/>
<div class="form-group row">
<label for="name" class="col-form-label">User name</label>
<input type="text" class="form-control" id="name" th:field="*{name}" name="name"/></div>
<div class="form-group row">
<label for="code" class="col-form-label">Code</label>
<input type="text" class="form-control" id="code" th:field="*{region.code}" name="code"/></div>
<button type="submit" class="btn btn-primary col-sm-6 ">Save</button>
</form>
由于某种原因,单击提交表单后出现以下错误:
There was an unexpected error (type=Bad Request, status=400).
Required String parameter 'code' is not present
org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'code' is not present
我不确定我是否正确使用了requestparams,所以也许与此有关吗?我不知道,我已经坚持了几个小时,如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:0)
问题在于th:field="*{region.code}"
将您的name
属性覆盖到name="region.code"
中。您可以通过使用浏览器的开发工具检查呈现的<input>
元素来判断。
您可以更改以下内容
th:field="*{region.code}"
...进入:
th:value="${user.region.code}"