es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error del resolutor Swagger – no se pudo resolver el puntero

Tengo un método de controlador de Spring de la siguiente manera.

@PutMapping("/update")
public ResponseEntity<string> updateMethod(@RequestBody() ListDto listDto) {
...
}

El parámetro de entrada debe ser una instancia de la clase ListDto. La clase ListDto es la siguiente.

@Data
@ApiModel(description = "update list dto")
public class ListDto extends ArrayList<objectdto> {
}

La clase ObjectDto es la siguiente.

@Data
@ApiModel(description = "update object dto")
public class ObjectDto {
    @ApiModelProperty(example = "1")
    private String id;

    @ApiModelProperty(example = "new message")
    private String message;
}

El problema es que cuando intento usar el método en Swagger, obtengo el siguiente error: parece que la definición de Swagger para la clase ObjectDto no se crea en tiempo de ejecución.

enter image description here

¿Existe alguna manera de forzar la creación de la definición y hacer que desaparezca este error?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de forzar la creación de la clase ObjectDto y hacer que desaparezca el error en Swagger. Puedes agregar la anotación @ApiModel a la clase ObjectDto y proporcionar una descripción para ella. Esto asegurará que la definición de Swagger para la clase se cree durante la ejecución.

    Aquí te mostramos cómo puedes actualizar la clase ObjectDto:

    @Data
    @ApiModel(description = "actualizar objeto dto")
    public class ObjectDto {
        @ApiModelProperty(example = "1")
        private String id;
    
        @ApiModelProperty(example = "nuevo mensaje")
        private String message;
    }
    

    Al agregar la anotación @ApiModel con una descripción, Swagger ahora podrá crear la definición de la clase ObjectDto durante la ejecución, y el error debería desaparecer.

Comments are closed.