webservice 对象属性绑定、映射问题
对象代码如下:
@Data
@NoArgsConstructor
@AllArgsConstructor
@XmlRootElement
public class GetUserInfoRequestDTO {
/**
* 页码
*/
@XmlElement(name = “page”, required = true)
private Integer page;
/**
* 每页条数
*/
@XmlElement(name = “size”, required = true)
private Integer size;
/**
* 查询信息
*/
@XmlElement(name = “queryString”, required = false)
private String queryString;
}
服务接口定义如下:
@WebService(name = “WebService”, targetNamespace = “service.xxxxx.com”)
@BindingType(SOAPBinding.SOAP12HTTP_BINDING)
public interface IWebService {
@WebMethod
List<HashMap<String, Object>> getUserInfo(
@WebParam(name = “resuestInfo”) GetUserInfoRequestDTO resuestInfo);
启动服务报错:
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 3 counts of IllegalAnnotationExceptions
Class has two properties of the same name “page”.
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 3 counts of IllegalAnnotationExceptions
Class has two properties of the same name “page”
显示xml 绑定失败。找到了同名属性。看代码里,并没有同名属性。
后来发现,使用JAXB 做属性映射绑定时,有两种策略:字段/Getter
就是可以根据字段或者get方法绑定属性。
然后我代码里,字段名是显示的使用了@XmlElement(name = “page”, required = true) 注解绑定属性,同时还使用了lombok的@Data声明了get方法。Lombok生成的getPage() 也会被映射!
结果导致了双重映射。导致属性重复错误:Class has two properties of the same name “page”.
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
66源码网 » webservice 对象属性绑定、映射问题