首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring引导restful web服务。Xml响应格式错误

Spring引导restful web服务。Xml响应格式错误
EN

Stack Overflow用户
提问于 2018-11-12 11:19:22
回答 1查看 167关注 0票数 0

我有一个简单的Restful webService,使用SpringBoot2.1,Java8,运行在Eclipse上。我发送以下请求:

代码语言:javascript
复制
<patentListWrapper>
    <patentList>
        <patent>
            <guid>bbb</guid>
        </patent>
       <patent>
           <guid>ccc</guid>
       </patent>
    </patentList>
</patentListWrapper>

我得到以下(不正确的)回应:

代码语言:javascript
复制
<patentListWrapper>
    <patentList>
        <patentList>
            <guid>ddd</guid>
        </patentList>
       <patentList>
           <guid>eee</guid>
       </patentList>
    </patentList>
</patentListWrapper>

我在响应中有两个patentList元素,而不是内部的专利元素,我不知道为什么。映射请求的2个POJO类是:

代码语言:javascript
复制
public class PatentListWrapper {

private List<Patent> patents;

public List<Patent> getPatentList() {
    return patents;
}

public void setPatentList(List<Patent> patents) {
    this.patents = patents;
}   
}

以及:

代码语言:javascript
复制
public class Patent {

private String guid;

public String getGuid() {
    return guid;
}

public void setGuid(String guid) {
    this.guid = guid;
}

public Patent() {
    super();
}
}

我的REST控制器类是:

代码语言:javascript
复制
@RestController
public class PndController {
@Autowired
ReadFromDb db;

@RequestMapping(value = "/guidRequest/xmlList", method = RequestMethod.POST, produces = { "application/xml", "text/xml" }, consumes = MediaType.ALL_VALUE )

public PatentListWrapper guidSearchList(@RequestBody  PatentListWrapper patentListWrapper) {
    System.out.println("DS in  guidSearchList()");

    patentListWrapper = db.readGuidsFromDb(patentListWrapper); // Set the guid in the patents List in patentListWrapper

    return patentListWrapper;
}
}

和ReadFromDb类:

代码语言:javascript
复制
@Repository
public class ReadFromDb {

public PatentListWrapper readGuidsFromDb(PatentListWrapper patentListWrapper) {
    List<Patent> patents=  patentListWrapper.getPatentList();
    for(Patent patent : patents) {
        patent.setGuid("aaa");
    }
    patentListWrapper.setPatentList(patents);
    return patentListWrapper;
}

}

我正在使用windows高级Rest客户端发送我的Rest:内容类型=application/xml的Rest客户机

我已经建立了 patentList元素名映射到PatentListWrapper中的patentList。如何获得响应信封以匹配请求信封?任何帮助都很感激。

EN

回答 1

Stack Overflow用户

发布于 2018-11-12 11:34:25

确实,只需创建具有相同变量名的getter setter方法,如下所示,而不是对getter setter方法使用不同的名称

代码语言:javascript
复制
private List<Patent> patents;

public List<Patent> getPatents() {
 return patents;
}

public void setPatents(List<Patent> patents) {
 this.patents = patents;
}

或者使用GSON并使用@JsonProperty并定义所需的值名,如果您没有使用IDE生成getter和setter,最好使用lombok插件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53261066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档