gpt4 book ai didi

java - 为什么 RequestBody 不会绑定(bind)到我的 java 模型?

转载 作者:太空宇宙 更新时间:2023-11-04 12:55:28 25 4
gpt4 key购买 nike

我在这里尝试做的是将 JSON 值与 RequestBody 绑定(bind)到我的 java 模型中,但它不会绑定(bind)到我的 java 模型中。这是我的代码:

这是我的 HelloController.java

        @RequestMapping(value = "/transaksi/", method = RequestMethod.POST)
public ResponseEntity<Void> simpanKupon(@RequestBody TransaksiKupon transaksi, UriComponentsBuilder ucBuilder) {

String a = "asdf";

/* if (userService.isUserExist(user)) {
System.out.println("A User with name " + user.getNM_TOKO() + " already exist");
return new ResponseEntity<Void>(HttpStatus.CONFLICT);
}*/

transaksiService.saveKupon(transaksi);

HttpHeaders headers = new HttpHeaders();
/*headers.setLocation(ucBuilder.path("/login").buildAndExpand(transaksi.getKodevoucher()).toUri());*/
return new ResponseEntity<Void>(headers, HttpStatus.CREATED);
}

我使用POST作为请求方法,但它不起作用,“transaksi”模型为空

但是当我使用 GET 作为请求方法时,它可以正常工作。这是我在另一个 Controller 中的代码:

 @RequestMapping(value = "/transaksi/{KODEVOUCHER}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<TransaksiKupon> getValidasi(@PathVariable("KODEVOUCHER") String KODEVOUCHER) {


TransaksiKupon trxKupon = transaksiService.validasi(KODEVOUCHER);
if (trxKupon.getKODEVOUCHER() != null){
return new ResponseEntity<TransaksiKupon>(HttpStatus.NOT_FOUND);
}
/*if (trxkupon == null) {
System.out.println("User with id " + KODEVOUCHER + " not found");
return new ResponseEntity<TransaksiKupon>(HttpStatus.NOT_FOUND);
}*/

return new ResponseEntity<TransaksiKupon>(trxKupon,HttpStatus.OK);

}

它可以正常工作。这是我提交表单时的 angularjs 代码,app.js :

'use strict';

App2.factory('KuponService', ['$http', '$q', function($http, $q){

return {

simpanKupon: function(transaksi){
alert(JSON.stringify(transaksi));
return $http.post('http://localhost:8080/webbass/transaksi/', transaksi)
.then(
function(response){
return response.data;
},
function(errResponse){
console.error('Error while save transaksi');
return $q.reject(errResponse);
}
);
},

validasiKupon: function(transaksi){
/*var KODEVOUCHER = transaksi.KODEVOUCHER;*/
return $http.get('http://localhost:8080/webbass/transaksi/'+transaksi)
.then(

function(response){
return response.data;
},
function(errResponse){
console.error('Tidak ada Nomor Kupon ini');
return $q.reject(errResponse);

}
);
}


};

}]);

这是我的依赖项:

 <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.1.3</version>
</dependency>

我在这里错过了什么?我被困了快一周了,请帮助我!

最佳答案

在本例中,您依赖于解析器 - jackson,但如果您使用 Spring Boot,则必须使用 Jackson Annotstions 注释您的 body 对象,或者在 application.yml 中为应用程序配置解析器,它将按字段名称解析。

关于java - 为什么 RequestBody 不会绑定(bind)到我的 java 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35428520/

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