【发布时间】:2019-04-18 17:14:30
【问题描述】:
我在将数据从我的 React 应用程序发送到我的 Spring Boot 控制器时遇到了一个小问题,我通过 put 方法发送数据,但是我得到 400,错误,并且在 eclipse 中弹出一个错误,所以我确实是:
export const changeContratTypes = (idContrat, items, declaration) => {
const endpoint = template(CONTRAT_TYPES_CHANGE);
return instance // just an axios instance
.put(endpoint({ idContrat }), { items, declaration })
.then(values => values)
.catch(err => err.response);
};
我的端点常量是url,很简单,我发送声明是一个整数和项目是一个对象数组,我的对象结构是:
{
id: 1, // or 2, 3, ....
isSelected: true, // or false
title: "a String here"
}
为了在 Spring boot 中实现这一点,我在控制器中创建了这个方法:
@CrossOrigin(origins = "*")
@ApiOperation(value = "${contrat.recuperation}", notes = "${contrat.recuperation.notes}", response = ContratDetailDto.class)
@PutMapping(value="/{idContrat}/trtype")
@ApiModelProperty(example = "4000004")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Enrigistrer Les types de contrats ") })
public ResponseEntity enrigistrerTypesDeContrat(@ApiParam(value = "${contrat.recuperation.param.id}") @PathVariable long idContrat, @RequestBody TypesConformites tcf) {
if (log.isDebugEnabled()) {
log.debug("appel de la méthode enrigistrerTypesDeContrat");
}
System.out.println("Voila "+tcf.getDeclaration());
return ResponseEntity.ok(HttpStatus.OK);
}
这个控制器映射得很好,它里面的其他方法也可以正常工作,但是我使用的所有方法都是 Get 方法。
我之前所做的是创建一个用作 RequestBody 的类:
@Getter @Setter
public class TypesConformites {
private int declaration;
private ArrayList<Item> items;
public TypesConformites() {
}
}
这是我的项目类:
@Getter @Setter
public class Item {
private int id;
private String title;
private boolean isSelected;
public Item() {
}
}
我在 Java 中收到此错误:
块引用
JSON 解析错误:无法识别的字段“isSelected”(com.apicil.cosy.contrat.controller.api.impl.external.Item 类),未标记为可忽略;嵌套异常是 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“isSelected”(com.apicil.cosy.contrat.controller.api.impl.external.Item 类),未标记为可忽略(3 个已知属性: “标题”、“id”、“选定”]) 在 [来源:(PushbackInputStream);行:1,列:66](通过引用链:com.apicil.cosy.contrat.controller.api.impl.external.TypesConformites["items"]->java.util.ArrayList[0]->com.apicil .cosy.contrat.controller.api.impl.external.Item["isSelected"])
该代码有什么问题,任何帮助将不胜感激。
【问题讨论】:
-
错误状态您传递的是“isSelected”,根据您定义的服务,它应该被称为“selected”。
-
你能把它改写为答案,这样我就可以把它标记为真的......谢谢它的工作
-
这是我也面临的奇怪问题。只是将布尔变量名称更改为“已选择”,并且在请求正文和类中也更改了
-
我在前面改了,我的字段名是isSelected现在被选中了。
-
@TaouBen 看答案
标签: javascript java reactjs spring-boot