首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不更新其余属性的情况下更新spring引导中的单个表列?

如何在不更新其余属性的情况下更新spring引导中的单个表列?
EN

Stack Overflow用户
提问于 2020-01-23 16:41:56
回答 1查看 2.1K关注 0票数 0

我正在开发一个使用弹簧靴的汽车销售系统。当汽车经销商张贴一辆汽车在出售,汽车状态被设置为待定默认和管理员应该批准的帖子。我想要更新这个汽车状态,而不更新汽车的其他属性(里程,价格,型号等)。所以我试着使用put,但是我得到了一个错误,这个帖子是不允许的。这是我的代码很远。任何类似mysql语句集columnName = newValue的洞察力,其中id = id是我的代码使用@PathVariable获取的。

产品库(用于更新单个列)

代码语言:javascript
运行
复制
@Modifying
@Query(value = "update Product p set p.status = :status where  p.carId= :carId")
void setUpdateStatus (@Param("status") String status, @Param("carId") Long carId); 

更新状态的产品服务方法.

代码语言:javascript
运行
复制
   public void updateStatus( Long carId){
   productRepository.setUpdateStatus("APPROVED",carId);
   }

控制器方法,它使用@PathVariable从视图url.中获取产品id。

代码语言:javascript
运行
复制
@PutMapping("/updateStatus/{carId}")
public void updateStatus(@PathVariable("carId") Long carId){
    productService.updateStatus(carId);

}

--这是我的thymeleaf视图部分,负责从.获取id的url。

代码语言:javascript
运行
复制
<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将用于将状态更新为已批准状态。但我不允许犯错误。正如您从上面看到的,我的method="put“不是POST。我不知道出了什么问题。

EN

回答 1

Stack Overflow用户

发布于 2020-01-23 17:34:25

可能spring安全性是在您的项目中激活的,默认情况下,当您使用spring安全性时会启用csrf保护,因此您需要在请求头中发送csrf参数或禁用csrf。

在这里您可以看到如何发送标头参数: Spring MVC PUT Request returns 405 Method Not Allowed

和这里如何禁用csrf: Enable HTTP Request POST in Spring Boot

只对开发使用第二个选项!,您可以使应用程序不安全,使crsf保护失效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59883349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档