我正试图在spring boot+thymeleaf中开发一个应用程序,我能够从mysql数据库的profile选项卡中检索登录用户的详细信息,但是,当我尝试更改一个或两个字段详细信息(更新)并点击更新按钮时,会显示一条错误消息-fri sep 04 20:39:47 ist 2020出现意外错误(type=method not allowed,status=405)。不支持请求方法“post”
查看我的控制器代码(我在类的顶部使用@restcontroller注解)-
@RequestMapping(value = "/profile", method = RequestMethod.PUT)
public ModelAndView updateProfile(@ModelAttribute Customer customer, HttpSession session) {
ModelAndView model = new ModelAndView();
Customer exist = cRepo.findByCustEmail(customer.getCustEmail());
if(exist != null) {
if(exist.getCustEmail().equals(session.getAttribute("emailsession"))) {
cRepo.save(customer);
model.addObject("msg", "User Details has been successfully updated!!");
model.setViewName("profile");
}
}else {
model.addObject("exist", "Please enter correct email address!");
String email = (String) session.getAttribute("emailsession");
Customer cust = cRepo.findByCustEmail(email);
model.addObject("customer", cust);
model.setViewName("profile");
}
return model;
}
文件页代码(html)-
<div align="center" class="alert alert-success" th:if="${msg}" th:utext="${msg}"></div>
<div align="center" class="alert alert-danger" th:if="${exist}" th:utext="${exist}"></div>
<!-- Modal HTML -->
<div id="myModal">
<div class="modal-dialog modal-login">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Profile Details</h4>
</div>
<div class="modal-body">
<form name="myForm" th:action="@{/profile}" th:object="${customer}" method="post">
<div class="form-group">
<i class="fa fa-id-card"></i>
<input name="id" type="text" class="form-control" placeholder="Enter Id" th:field="${customer.custId}" disabled="true" required="required" />
</div>
<div class="form-group">
<i class="fa fa-user"></i>
<input name="name" type="text" class="form-control" placeholder="Enter Name" th:field="${customer.custName}" required="required" />
</div>
<div class="form-group">
<i class="fa fa-envelope"></i>
<input name="email" type="email" class="form-control" placeholder="Enter Email" th:field="${customer.custEmail}" required="required" />
</div>
<div class="form-group">
<i class="fa fa-lock"></i>
<input name="password" type="text" class="form-control" placeholder="Enter Password" th:field="${customer.custPassword}" required="required" />
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary btn-block btn-lg" value="Update" />
</div>
</form>
</div>
</div>
</div>
</div>
我想当用户登录和访问他/她应该能够检查他/她的个人资料(我可以做工作代码),当用户想更新几个字段(1-2根据选择)和点击更新,他/她应该能够更新的细节(不创建新的用户或记录),因为当我使用@controller类的顶部,然后这个代码的工作和创建新用户改为更新。
3条答案
按热度按时间vxf3dgd41#
请检查我的发现并解决此问题。
nx7onnlm2#
您在is post中请求Map,但控制器已设置为接受put请求。
只要保持这些相似的方式两者应该是相同的。
oknrviil3#
您的控制器带有注解
@RequestMapping(value = "/profile", method = RequestMethod.PUT)
这使得它成为一个put端点。然而,你的要求显然是一个职位。如果我们看看你的html表单,它包含method="post"
. html表单只支持get和post作为有效方法,因此需要将端点更新为post端点。tldr公司;
到