Spring Boot + Swagger + Swagger UI和@RequestBody的数据类型为String - java

我在使用Spring Boot 1.4和Swagger和Swagger UI时遇到问题。使用@RequestBody时,参数显示为数据类型字符串。这似乎不正确。

@ApiOperation(value = "simple message resource")
@ApiImplicitParams({
        @ApiImplicitParam(name = "message", value = "Message to send", required = true, dataType = "com.larmic.springboot.swagger.rest.dto.MessageDto", paramType = "body")
})
@RequestMapping(value = "/api/message", method = RequestMethod.POST,
        consumes = {"application/json", "application/xml"})
public void sendMessage(@RequestBody MessageDto message) {
    System.out.println("ping");
}

@XmlRootElement(name = "MessageDto")
@XmlAccessorType(XmlAccessType.FIELD)
@ApiModel(value = "MessageDto", description = "TODO")
public class MessageDto {

    @ApiModelProperty(value = "Message content text", required = true, example = "some demo message")
    private String content;

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

我发现使用MessageDto的全名或设置了正确的@ApiModel值可以解决很多问题,但似乎没有任何效果。

我在这里创建了完整的示例https://github.com/larmic/SpringBootAndSwaggerUI

也许有人可以帮忙。

参考方案

这似乎是Springfox(#1344)中的错误。您可以通过不使用@ApiImplicitParams来解决此问题,但可以使用@ApiParam批注来注释方法参数本身:

@ApiOperation(value = "simple message resource")
@RequestMapping(value = "/api/message", method = RequestMethod.POST,
        consumes = {"application/json", "application/xml"})
public void sendMessage(@ApiParam(name = "message", value = "Message to send", required = true) @RequestBody MessageDto message) {
    System.out.println("ping");
}

在Java中,执行“ ++++++++”表达式,编译器未报告任何错误并且可以正确执行? - java

我用eclipse编写了这段代码,用war写过,结果为3d。public static void main(String[] args) { double a = 5d + + + + + +-+3d; System.out.println(a); } 参考方案 您的表情可以改写为(5d) + (+ + + + +-+3d) 其中第一个+是应用于两个操作数的…

Spring Boot-使用上下文路径时在根级别的静态内容 - java

假设我有一个application.yml内容server: port: 8000 context-path: /rest 因此,将像这样访问所有控制器和htmlhttp://server:8000/rest/controller因此,具有此配置...有可能在不更改其上下文路径的情况下将一些静态html元素添加到其根级别? (我已经将index.html添加…

Spring Boot:java.time.Duration的默认序列化从字符串更改为数字 - java

我们最近从Spring Boot 2.1.9升级到2.2.1,这导致我们的测试失败。调查导致结果,默认情况下java.time.Duration类型现在序列化为不同的序列。现在,我们将得到"PT15M",而不是在JSON消息中包含字符串"900.0"。 POJO定义如下所示@JsonProperty(required …

Hibernate通过非主键获取实体并更新它+ Spring MVC - java

当我使用其ID检索对象并更改其属性并更新它时,一切正常,但是当我使用其名称+版本获取对象并更新它们时,所有更改都不会保存在数据库中。您能不能让别人让我知道是什么问题?//通过id获取public PdfDocument get(Long id) { return (PdfDocument) session().get(PdfDocument.class, i…

Java值加变量++ - java

考虑以下代码int val1 = 3; val1++; int val2 = val1++; System.out.println(val1); System.out.println(val2); Val1值= 5;Val2值= 4;为什么Val1的值是“ 5”?据我了解,应该为4,因为:在第1行,它的赋值为3,在第2行,通过val1 ++加上1,结果val…