Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 大摇大摆弹簧多态DTO_Java_Spring_Spring Mvc_Swagger_Swagger 2.0 - Fatal编程技术网

Java 大摇大摆弹簧多态DTO

Java 大摇大摆弹簧多态DTO,java,spring,spring-mvc,swagger,swagger-2.0,Java,Spring,Spring Mvc,Swagger,Swagger 2.0,我正在使用swagger生成我的DTO。 我有一个InputField和一个TextareaField DTO,它们继承了Field类 My yaml具有以下定义: definitions: field: discriminator: fieldType required: - name - fieldType # required for inheritance to work properties: name:

我正在使用swagger生成我的DTO。 我有一个InputField和一个TextareaField DTO,它们继承了Field类

My yaml具有以下定义:

definitions:
  field:
    discriminator: fieldType
    required:
      - name
      - fieldType # required for inheritance to work
    properties:
      name:
        type: string
      fieldType:
        type: string
  inputField:
    allOf:
      - $ref: '#/definitions/field' # All properties of a Field
      - properties: # extra properties only for fields
          placeholder:
            type: string
  textareaField:
    allOf:
      - $ref: '#/definitions/field' # All properties of a Field
      - properties: # extra properties only for fields
          placeholder:
            type: string
  form:
    type: object
    required:
      - name
    properties:
      name:
        type: string
      fields:
        type: array
        items:
          $ref: '#/definitions/field'
然后在我的spring端点中,我有以下REST控制器:

@Override
public ResponseEntity<Void> addForm(@ApiParam(value = "form object to add to the store", required = true) @RequestBody Form form) {

    if(form.getFields().isEmpty()){
        return  new ResponseEntity<>(HttpStatus.UNPROCESSABLE_ENTITY);
    }

    ch.test.form.database.model.Form formModel = new ch.test.form.database.model.Form();
    formModel.setName(form.getName());

    for(Field field: form.getFields()){
        System.out.println(field);
        switch(field.getFieldType()){
            case "InputField":
                formModel.addField(new InputField(field.getName(), ((ch.test.form.api.dto.InputField)field).getPlaceholder()));
                break;
            case "TextareaField":
                formModel.addField(new TextareaField(field.getName(), ((ch.test.form.api.dto.TextareaField)field).getPlaceholder()));
                break;
        }
    }

    formModel.setUser(user);

    try{
        formRepository.save(formModel);
        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.set("location", "/pointScales/" + formModel.getId());
        return ResponseEntity.status(HttpStatus.CREATED).headers(responseHeaders).build();
    } catch (DataIntegrityViolationException e){
        System.out.println(e.getMessage());
        System.out.println(e.getClass());
        return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
    }
}

我做错了什么?创建DTO时是否缺少注释swagger?

我删除了swagger代码生成,以便我可以自己配置DTO并添加
@JsonTypeInfo
注释

{
"fields": [
    {
      "fieldType": "InputField",
      "name": "string",
      "placeholder": "test"
    }
  ],
  "name": "string"
}