Spring WSDL生成的Country类无writer列表Setter,如何添加元素
解决方法
你遇到的权限报错是因为writer成员变量是protected修饰,非同类/同包/子类无法直接访问,JAXB自动生成的集合类字段默认就是这种设计:不提供setter,直接通过getter方法获取集合实例后操作即可。
正确代码写法
Writer w = new Writer(); w.setName("Miguel"); w.setSurname("Cervantes"); Country spain = new Country(); spain.setName("Spain"); // 不直接访问protected的writer字段,调用getWriter()方法获取集合实例后操作 spain.getWriter().add(w);
可选配置:让JAXB自动生成集合的setter方法
如果你希望后续自动生成的类自带setWriter()方法,可以修改JAXB代码生成插件的配置,比如给jaxb2-maven-plugin添加生成setter的参数,重新生成代码后就可以直接传入自定义的Writer集合完成赋值。
内容的提问来源于stack exchange,提问作者Grzegorz Wilanowski
相关产品推荐
相关产品推荐

