我正在开发一个使用spring Boot的汽车销售系统。当汽车经销商发布出售的汽车时,默认情况下,汽车状态设置为“挂起”,管理员应该批准发布。我想更新这辆车的状态,而不更新一辆车的其他属性(milleage,price,model,等等)。所以我尝试使用put,但我得到一个错误,即POST是不允许的。这是我的代码。对于类似mysql语句的任何见解,请设置columnName=newValue,其中id=id,我的代码正在使用@PathVariable获取。
产品存储库(用于更新单个列)
@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);
}
@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将状态更新为“已批准”。但我得到了错误mehtod POST不允许。从上面可以看出我的method=“put”不是post。我不知道哪里出了问题。
spring security可能在您的项目中被激活,默认情况下,当您使用spring security时,csrf保护是启用的,因此您需要在请求头中发送csrf参数或停用csrf。
这里可以看到如何发送头参数:Spring MVC PUT Request returns 405 Method Not Allowed
以及如何停用CSRF:在Spring Boot中启用HTTP请求POST
第二种选择只用于开发!停用crsf保护会使应用程序不安全。
我有两份清单: 我想要一个新的名单,比如: 我尝试了以下方法: 但有一些严重的错误
问题内容: 我创建了一个SQL查询,该查询更新了一个表列,其中另一列=值 代码: 问题出在。如何使其使用这些ID更新列? 问候。 问题答案: 替换为
问题内容: 我正在NHibernate中对单个属性执行标准更新。但是,在提交事务时,sql更新似乎设置了我映射到表上的所有字段,即使它们没有更改。当然这不是Nhibernate中的正常行为吗?难道我做错了什么?谢谢 问题答案: 这是正常现象。您可以尝试添加到类定义中以覆盖此行为。
因此,我在DynamoDB中有一项: 我想添加一个新的属性到上述项目,属性是: 现在,我在JS中使用AWS-SDK这样做: 但是,我得到一个错误: ExpressionAttributeValue包含无效值:一个或多个参数值无效:AttributeValue不能包含key:newAttr的空字符串 所以如果我是这样就可以了,但我不希望这个新属性是一个字符串,我希望它是一个列表。 那么我做错了什么?
问题内容: 内容: 我要从更改为。这是我的代码: 输出内容: 其他属性将被删除。我想更新一个特定的属性值,而不删除其他属性。 问题答案: 关闭输入流后,打开输出流并存储属性。