如何在POST方法上接收非实体类作为参数?

控制器方法:

@PostMapping("/nova")
@ResponseStatus(HttpStatus.CREATED)
public String adicionarTemp(@RequestBody TempCaptacao temp) {

Param课:

public class TempCaptacao{
    String dsnome;
    ...
    List<TempResponsavel> listaResponsavel;
public TempCaptacao() {

        }

SubParam类:

public class TempResponsavel{
        Long id;
        String dsnome;
...
public TempResponsavel() {

        }

当Angular调用此方法时,springs传递JSON(如下所示)将返回此错误:

.wsmsDefaulthandlerExceptionResolver:已解决的[org.springframework.http.converter.HttpMessageNotReadableException:JSON解析错误:无法构造com.spin.spincare.controller.MovAtendimentoCaptacaoController$TempCaptacao的实例(尽管存在至少一个Creator):只能通过实例化非静态内部类使用默认的无参数构造函数;嵌套异常是com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造com.spin.spincare.controller.MovAtendimentoCaptacaoController$TempCaptacao的实例(尽管存在至少一个Creator):只能使用默认的无参数构造函数实例化非静态内部类  在[来源:(PushbackInputStream);行:1,列:2]]

JSON:

{ 
   "dsnome":"teste","dsGenero":"Masculino","dtNascimento":"2000-12-30T02:00:00.000Z","idConvenio":16,"dsCep":"12321321","dsEndereco":"teste","dsEstado":"SC","dsCidade":"","dsBairro":"","dsComplemento":"","listaResponsavel":[ 
      { 
         "id":1,"dsnome":"teste","nrCelular":"231321312213","dsEmail":"","dsGrau":"Pai"
      }
   ]
}

我有那些空的构造方法,但是在类中有一个列表,如何将此类作为参数传递给我的POST方法?

编辑

我的TempCaptacao类上缺少静态定义。 谢谢!

snowzqnasa 回答:如何在POST方法上接收非实体类作为参数?

考虑到错误和您发布的内容之后,我认为您正在执行的操作是

public class TempCaptacao {
    // attributes etc
    public TempCaptacao() {}
    public class TempResponsavel { // inner class
        // attributes etc
        public class TempResponsavel() {}
    }
}

不要那样做。如果除可维护性/可读性/可扩展性之外没有其他原因,请分别在模型中定义类。

如果您从内部类中删除构造函数,我认为JSON应该能够反序列化,但是在执行诸如此类的非标准操作时,您将遇到许多问题。

本文链接:https://www.f2er.com/3165956.html

大家都在问