gpt4 book ai didi

java - Restful PUT 方法的 ModelAttribute 未填充值 ( JSON )

转载 作者:行者123 更新时间:2023-11-30 04:10:59 26 4
gpt4 key购买 nike

我正在使用 Spring MVC 构建一个完全安静的 Web 应用程序。当我有 PUT 方法时,我的 @ModelAttribute 表单 bean 未填充(所有值均为 null)。如果我使用 POST 方法,所有内容都会正确填充。

我使用 Postman 进行查询 ( https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm )图片请求 postman :http://www.hostingpics.net/viewer.php?id=474577probleme.jpg

@Entity
@Table(name = "positiongps")
public class PositionGPS implements BaseEntity<Long> {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, columnDefinition = "SERIAL", updatable = false)
private Long id;

@Column(name = "latitude", precision = 11, scale = 7, columnDefinition = "NUMERIC", nullable = false, updatable = true, unique = false)
private BigDecimal latitude;

@Column(name = "longitude", precision = 11, scale = 7, columnDefinition = "NUMERIC", nullable = false, updatable = true, unique = false)
private BigDecimal longitude;

// ** Constructeur **//

public PositionGPS() {
super();
latitude = new BigDecimal("0");
longitude = new BigDecimal("0");
}

// ** Get and Set **//

.

@ResponseBody
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public boolean update(@ModelAttribute("positionGPS") PositionGPS positionGPS, @PathVariable Long id, Model model) {
LOG.debug("update :: IN, PositionGPS.Id=[" + id + "]");
PositionGPS positionGPSOld = positionGPSService.getById(id);
LOG.debug("update :: getId=[" + positionGPS.getId() + "]");
LOG.debug("update :: getLatitude=[" + positionGPS.getLatitude() + "]");
LOG.debug("update :: getLongitude=[" + positionGPS.getLongitude() + "]");

try {
if (positionGPSOld != null) {
positionGPSOld.setLatitude(positionGPS.getLatitude());
positionGPSOld.setLongitude(positionGPS.getLongitude());
PositionGPS newpositionGPS = positionGPSService.update(positionGPSOld);
} else {
LOG.debug("update :: PositionGPS Error test");
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return true;
}

web.xml

<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
<filter-name>httpMethodFilter</filter-name>
<filter- class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>httpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

我的控制台:

DEBUG: PositionGPSController - update :: IN,   PositionGPS.Id=[136]
DEBUG: PositionGPSController - update :: getId=[136]
DEBUG: PositionGPSController - update :: getLatitude=[0]
DEBUG: PositionGPSController - update :: getLongitude=[0]

最佳答案

我要替换

@ModelAttribute("positionGPS") PositionGPS positionGPS, @PathVariable Long id, Model model

对于

@RequestBody PositionGPS positionGPS, @PathVariable Long id, Model model)

链接帮助: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-config-enable

Spring MVC: Don't deserialize JSON request body

关于java - Restful PUT 方法的 ModelAttribute 未填充值 ( JSON ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19600532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com