相关疑难解决方法(0)

Jackson POJOPropertyBuilder在POJO中找到多个setter

我们正在使用Spring Web MVC 3.2.2和Jackson Databind 2.4.4(以及许多其他库中......)开发一个相当大的JSON REST API.

我正在尝试使用swagger-springmvc,但我遇到了一些我们的DTO问题.

无论我使用简单@EnableSwagger或更复杂的swagger配置,我在启动Tomcat 7时总是会遇到以下异常:

java.lang.IllegalArgumentException: Conflicting setter definitions for property "year": javax.xml.datatype.XMLGregorianCalendar#setYear(1 params) vs javax.xml.datatype.XMLGregorianCalendar#setYear(1 params)
at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getSetter(POJOPropertyBuilder.java:303)
at com.mangofactory.swagger.models.Annotations.findPropertyAnnotation(Annotations.java:33)
at com.mangofactory.swagger.models.property.bean.BeanModelProperty.<init>(BeanModelProperty.java:26)
at com.mangofactory.swagger.models.property.bean.BeanModelPropertyProvider.beanModelProperty(BeanModelPropertyProvider.java:166) (...rest of stacktrace )
Run Code Online (Sandbox Code Playgroud)

上面提到的属性"year"只是一个例子,在没有包含属性year的类的情况下尝试相同.

奇怪的是,杰克逊选择了两次相同的方法/设定者: javax.xml.datatype.XMLGregorianCalendar#setYear(1 params)vsjavax.xml.datatype.XMLGregorianCalendar#setYear(1 params

我花了一些时间与调试器,并注意到一些DTO似乎通过检查冲突的setter就好了.

我现在花了很多时间在这上面,无法提出解决方案.我在谷歌发现的这个例外的大多数页面都谈到了重载的方法/设置器,这与我的DTO不同 - 它们只是简单的对象,只有属性,设置器和getter.

任何帮助将不胜感激!

java spring-mvc jackson swagger

4
推荐指数
1
解决办法
4357
查看次数

标签 统计

jackson ×1

java ×1

spring-mvc ×1

swagger ×1