Javascript Can';无法从JS获取阵列到我的Spring引导控制器?

Javascript Can';无法从JS获取阵列到我的Spring引导控制器?,javascript,java,reactjs,spring-boot,Javascript,Java,Reactjs,Spring Boot,从React应用程序向Spring Boot控制器发送数据时,我遇到了一个小问题,我通过put方法发送数据,但我得到400,错误,eclipse中会弹出一个错误,因此我所做的是: export const changeContratTypes = (idContrat, items, declaration) => { const endpoint = template(CONTRAT_TYPES_CHANGE); return instance // just an ax

从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() {
   }

} 
我在Java中遇到以下错误:

大宗报价

JSON解析错误:无法识别的字段“isSelected”(class com.apicil.cosy.contart.controller.api.impl.external.Item),未标记为可忽略;嵌套异常为com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:未识别字段“isSelected”(class com.apicil.cosy.contrat.controller.api.impl.external.Item),未标记为可忽略(3个已知属性:“title”、“id”、“selected”]) 在[Source:(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”])


如果代码有什么问题,我们将非常感谢您的帮助。

一般情况下,项由jackson反序列化如下:-

public void setId(String firstName) {

public void setTitle(String lastName) {

public void setSelected(boolean isActive) {

为了避免这种情况,您只需更改和请求正文中的映射名称即可。。或者用
@JsonProperty

注释您的isSelected,通常项由jackson反序列化如下:-

public void setId(String firstName) {

public void setTitle(String lastName) {

public void setSelected(boolean isActive) {

为了避免这种情况,您只需更改和请求正文中的映射名称即可。。或者用
@JsonProperty

注释您的isSelected。错误表明您正在传递“isSelected”,根据您定义的服务,它应该被称为“selected”。您是否可以将此重写为答案,以便我可以将其标记为true。。谢谢,这是我也面临的一个奇怪的问题。刚才将布尔变量名更改为“Selected”,并且在请求正文和类中,我在前面更改了它,我的字段名是isSelected,现在它被选中。@TaouBen查看答案您传递的错误状态是“isSelected”,它应该被称为“Selected”根据你定义的服务。你能把这个改写成答案吗?这样我就可以把它标记为真的。。谢谢,这是我也面临的一个奇怪的问题。刚刚将布尔变量名更改为“Selected”,并且在请求正文和类中我在前面更改了它,我的字段名被选中,现在它被选中。@TaouBen看到答案谢谢你的回答,但我通过更改前面而不是后面的内容解决了我的问题谢谢你的回答,但我通过改变前面而不是后面的事情解决了我的问题