gpt4 book ai didi

javascript - 无法从 JS 获取数组到我的 Spring 引导 Controller ?

转载 作者:行者123 更新时间:2023-11-30 14:04:16 24 4
gpt4 key购买 nike

我在将数据从我的 React 应用程序发送到我的 Spring Boot Controller 时遇到了一个小问题,我通过 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 中得到这个,我在我的 Controller 中创建了这个方法:

@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);
}

此 Controller 映射良好,其中的其他方法也能正常工作,但我使用的所有方法都是 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 中遇到这个错误:

Blockquote

JSON parse error: Unrecognized field "isSelected" (class com.apicil.cosy.contrat.controller.api.impl.external.Item), not marked as ignorable; nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "isSelected" (class com.apicil.cosy.contrat.controller.api.impl.external.Item), not marked as ignorable (3 known properties: "title", "id", "selected"]) at [Source: (PushbackInputStream); line: 1, column: 66] (through reference chain: com.apicil.cosy.contrat.controller.api.impl.external.TypesConformites["items"]->java.util.ArrayList[0]->com.apicil.cosy.contrat.controller.api.impl.external.Item["isSelected"])

该代码有什么问题,我们将不胜感激。

最佳答案

通常 Item 被 jackson 像这样反序列化:-

public void setId(String firstName) {

public void setTitle(String lastName) {

public void setSelected(boolean isActive) {

为避免这种情况,您只需更改 Item 和请求正文中的映射名称.. 或使用 @JsonProperty 注释您的 isSelected

关于javascript - 无法从 JS 获取数组到我的 Spring 引导 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55750880/

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