我在控制器中从表单到方法有post方法的奇怪问题。 每个映射都可以,但是当我在'select'中输入th:field时,我收到错误405。 我尝试删除它(th:field = * {code})然后它正在工作,但我没有这个的价值。
所以,在我的GET方法控制器中,我把代码对象的模型列表和对象的新位置(对于表单) 然后在“select”中的表单html中,我显示每个单独的Code对象。 简而言之,我想将数据从select发布到我的控制器中的post方法
这是我在控制器中的代码:
@GetMapping("/add-shop-position")
public ModelAndView addShopPositionForm(){
ModelAndView modelAndView = new ModelAndView("admin/addShopPosition");
List<Code> codes = codeService.getAllCodes();
modelAndView.addObject("codes", codes);
modelAndView.addObject("position", new Position());
return modelAndView;
}
@PostMapping("/add-shop-position")
public ModelAndView addShopPositionSubmit(@ModelAttribute Position position){
ModelAndView modelAndView = new ModelAndView("admin/addShopPosition");
if(positionService.addPosition(position)){
//I will do something here in future
}else{
//I will do something here in future
}
return modelAndView;
}
当然我的控制器有RequestMapping:
@Controller
@RequestMapping(value = "/admin")
public class AdminController {}
这就是我在Thymeleaf中的形式,html视图:
<form action="#" th:action="@{/admin/add-shop-position}" th:object="${position}" method="POST"
style="margin: 0 auto; width: 50%">
<div class="form-group">
<input class="form-control" type="text" th:field="*{title}" th:placeholder="Title">
</div>
<div class="form-group">
<input class="form-control" type="text" th:field="*{description}" th:placeholder="Description">
</div>
<div class="form-group">
<select class="form-control" th:field="*{code}">
<option th:each="code : ${codes}"
th:value="${code}"
th:text="${code.getCode()}"></option>
</select>
</div>
<div class="form-group">
<button class="btn btn-primary btn-block" type="submit" value="Submit">Create</button>
</div>
</form>