Spring中的th:field不支持Spring Request方法'POST'

时间:2018-02-12 23:49:16

标签: spring post select http-status-code-405

我在控制器中从表单到方法有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>

0 个答案:

没有答案