【发布时间】:2020-05-10 00:11:28
【问题描述】:
我正在使用 spring boot 开发汽车销售系统。当汽车经销商发布待售汽车时,汽车状态默认设置为待处理,管理员应批准该帖子。我想更新此汽车状态而不更新汽车的其他属性(里程、价格、型号等)。因此,我尝试使用 put,但出现不允许 POST 的错误。到目前为止,这是我的代码。我的代码使用@PathVariable 获取的类似于 mysql 语句 set columnName = newValue where id = id 的任何见解。
产品存储库(用于更新单个列)
@Modifying
@Query(value = "update Product p set p.status = :status where p.carId= :carId")
void setUpdateStatus (@Param("status") String status, @Param("carId") Long carId);
产品服务更新状态的方法。
public void updateStatus( Long carId){
productRepository.setUpdateStatus("APPROVED",carId);
}
控制器方法使用 @PathVariable 从视图 url 获取产品 ID。
@PutMapping("/updateStatus/{carId}")
public void updateStatus(@PathVariable("carId") Long carId){
productService.updateStatus(carId);
}
这是我的 thymeleaf 视图部分,负责我从中获取 id 的 url。
<form action="#" th:action="@{'/updateStatus/'+${pending.carId}}" th:method="put" >
<input type="hidden" name="_method" value="put" />
<button type="submit" id="Approve" name="Approve"> </button>
</form>
我希望 id 用于将状态更新为 APPROVED。但我收到错误 mehtod POST not allowed。从上面可以看出,我的方法 =“put”不是 POST。我不知道出了什么问题。
【问题讨论】:
标签: java spring-boot spring-mvc spring-data-jpa thymeleaf