尝试访问 pojo 时出现 NoMessageBodyWriterFoundFailure
NoMessageBodyWriterFoundFailure when trying to access pojo
我正在尝试将 Web 服务项目从 jersey 迁移到 resteasy,但出现了一个奇怪的错误:
ERROR [org.jboss.resteasy.resteasy_jaxrs.i18n] (default task-42) RESTEASY002005: Failed executing GET /directors/tmlist/dirUsr: org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: com.company.sales.beans.Resource of media type: application/json
我在网上找到的所有内容都告诉我,我需要向导致问题的 pojo 添加注释,但它似乎没有任何区别。
我正在使用的 pojo 是:
package com.company.sales.beans;
import javax.xml.bind.annotation.*;
import java.util.List;
@XmlRootElement
public class Resource<T> {
@XmlAnyElement(lax = true)
@XmlElement(name = "content")
private List<T> m_Content;
@XmlAttribute(name = "type")
private String m_Type;
@XmlAttribute(name = "src")
private String m_Source;
@XmlElementRef(name = "links")
private List<Link> m_Links;
/**
*
*/
public Resource() {
m_Content = null;
m_Type = null;
m_Source = null;
}
/**
* @return the m_Content
*/
public List<T> getContent() {
return m_Content;
}
/**
* @param m_Content the m_Content to set
*/
public void setContent(List<T> m_Content) {
this.m_Content = m_Content;
}
/**
* @return the m_Type
*/
public String getType() {
return m_Type;
}
/**
* @param m_Type the m_Type to set
*/
public void setType(String m_Type) {
this.m_Type = m_Type;
}
/**
* @return the m_Source
*/
public String getSource() {
return m_Source;
}
/**
* @param m_Source the m_Source to set
*/
public void setSource(String m_Source) {
this.m_Source = m_Source;
}
/**
* @return the m_Links
*/
public List<Link> getLinks() {
return m_Links;
}
/**
* @param m_Links the m_Links to set
*/
public void setLinks(List<Link> m_Links) {
this.m_Links = m_Links;
}
}
这是我工作的公司的一名前雇员创建的,据我所知,它与他们使用的以前的库 (jersey 1.17) 配合得很好。我不完全确定为什么 resteasy 仍然抱怨缺少消息正文编写器,因为我发现一些不同的站点声称添加 @XmlRootElement 应该使其默认为某些内置 writer/reader.
你看到了吗this link?
它说要添加 @XmlElement(required = true)
。
另一件事是这看起来像一个通用类型。会不会是 RESTEasy 不喜欢或不能处理使用泛型的对象?
我正在尝试将 Web 服务项目从 jersey 迁移到 resteasy,但出现了一个奇怪的错误:
ERROR [org.jboss.resteasy.resteasy_jaxrs.i18n] (default task-42) RESTEASY002005: Failed executing GET /directors/tmlist/dirUsr: org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: com.company.sales.beans.Resource of media type: application/json
我在网上找到的所有内容都告诉我,我需要向导致问题的 pojo 添加注释,但它似乎没有任何区别。
我正在使用的 pojo 是:
package com.company.sales.beans;
import javax.xml.bind.annotation.*;
import java.util.List;
@XmlRootElement
public class Resource<T> {
@XmlAnyElement(lax = true)
@XmlElement(name = "content")
private List<T> m_Content;
@XmlAttribute(name = "type")
private String m_Type;
@XmlAttribute(name = "src")
private String m_Source;
@XmlElementRef(name = "links")
private List<Link> m_Links;
/**
*
*/
public Resource() {
m_Content = null;
m_Type = null;
m_Source = null;
}
/**
* @return the m_Content
*/
public List<T> getContent() {
return m_Content;
}
/**
* @param m_Content the m_Content to set
*/
public void setContent(List<T> m_Content) {
this.m_Content = m_Content;
}
/**
* @return the m_Type
*/
public String getType() {
return m_Type;
}
/**
* @param m_Type the m_Type to set
*/
public void setType(String m_Type) {
this.m_Type = m_Type;
}
/**
* @return the m_Source
*/
public String getSource() {
return m_Source;
}
/**
* @param m_Source the m_Source to set
*/
public void setSource(String m_Source) {
this.m_Source = m_Source;
}
/**
* @return the m_Links
*/
public List<Link> getLinks() {
return m_Links;
}
/**
* @param m_Links the m_Links to set
*/
public void setLinks(List<Link> m_Links) {
this.m_Links = m_Links;
}
}
这是我工作的公司的一名前雇员创建的,据我所知,它与他们使用的以前的库 (jersey 1.17) 配合得很好。我不完全确定为什么 resteasy 仍然抱怨缺少消息正文编写器,因为我发现一些不同的站点声称添加 @XmlRootElement 应该使其默认为某些内置 writer/reader.
你看到了吗this link?
它说要添加 @XmlElement(required = true)
。
另一件事是这看起来像一个通用类型。会不会是 RESTEasy 不喜欢或不能处理使用泛型的对象?