java– 为什么下面的Spring Boot HATEOAS与mongodb不起作用(MarshalException)?

java– 为什么下面的Spring Boot HATEOAS与mongodb不起作用(MarshalException)?,第1张

概述我试图将spring-data-mongodb与spring-hateoas一起使用,并通过测试获得javax.xml.bind.MarshalException异常.我该如何解决这个问题?我缺少注释或其他步骤吗?我的pom:<dependency> <groupId>org.springframework.hateoas&l

我试图将spring-data-mongodb与spring-hateoas一起使用,并通过测试获得javax.xml.bind.MarshalException异常.我该如何解决这个问题?我缺少注释或其他步骤吗?

我的pom:

我的“UserResourceAssembler.java”:

@Componentclass UserResourceAssembler implements ResourceAssembler

我的“User.java”代表一个mongodb文档:

@document@XmlRootElement(name="user")public class User {  @ID  private String ID;  private String occupation;  public User() {}  public User(String occupation) {     this.occupation = occupation;  }  @OverrIDe  public String toString() {return String.format(                       "{ID:%s,occupation='%s'}",ttID,occupation);      }}

我的“UserController.java”:

@RestController@ExposesResourceFor(User.class)@RequestMapPing(value = "/users")public class UserController {   @autowired   UserResourceAssembler userResourceAssembler;    @RequestMapPing(method = RequestMethod.GET,value = "/name/{user}")    Resource

在我的Application.java中,我包含以下注释:

@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)

我的问题是我访问时遇到错误的原因:

http://localhost:8080/users/name/doesnotmatterrightNow

基于错误消息的问题是与行:

return userResourceAssembler.toResource(new User("Teenager"));

以下是完整错误:

http Status 500 - Could not marshal [Resource { content: {ID:null,occupation='Teenager'},links: [] }]: null; nested exception is javax.xml.bind.MarshalExceptiontype Exception reportmessage Could not marshal [Resource { content: {ID:null,links: [] }]: null; nested exception is javax.xml.bind.MarshalExceptiondescription The server encountered an internal error that prevented it from fulfilling this request.exceptionorg.springframework.http.converter.httpMessageNotWritableException: Could not marshal [Resource { content: {ID:null,links: [] }]: null; nested exception is javax.xml.bind.MarshalException - with linked exception:[com.sun.istack.internal.SAXException2: class sample.User nor any of its super class is kNown to this context.javax.xml.bind.JAXBException: class sample.User nor any of its super class is kNown to this context.]    org.springframework.http.converter.xml.Jaxb2RootElementhttpMessageConverter.writetoResult(Jaxb2RootElementhttpMessageConverter.java:138)    org.springframework.http.converter.xml.AbstractXmlhttpMessageConverter.writeInternal(AbstractXmlhttpMessageConverter.java:66)    org.springframework.http.converter.AbstracthttpMessageConverter.write(AbstracthttpMessageConverter.java:207)    org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:148)    org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:90)    org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:193)    org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:71)    org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:122)    org.springframework.web.servlet.mvc.method.annotation.RequestMapPingHandlerAdapter.invokeHandleMethod(RequestMapPingHandlerAdapter.java:749)    org.springframework.web.servlet.mvc.method.annotation.RequestMapPingHandlerAdapter.handleInternal(RequestMapPingHandlerAdapter.java:689)    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)    org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:938)    org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:870)    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)    javax.servlet.http.httpServlet.service(httpServlet.java:620)    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)    javax.servlet.http.httpServlet.service(httpServlet.java:727)    org.springframework.web.filter.HIDdenhttpMethodFilter.doFilterInternal(HIDdenhttpMethodFilter.java:77)    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)root causejavax.xml.bind.MarshalException - with linked exception:[com.sun.istack.internal.SAXException2: class sample.User nor any of its super class is kNown to this context.javax.xml.bind.JAXBException: class sample.User nor any of its super class is kNown to this context.]    com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:311)    com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:236)    org.springframework.http.converter.xml.Jaxb2RootElementhttpMessageConverter.writetoResult(Jaxb2RootElementhttpMessageConverter.java:135)    org.springframework.http.converter.xml.AbstractXmlhttpMessageConverter.writeInternal(AbstractXmlhttpMessageConverter.java:66)    org.springframework.http.converter.AbstracthttpMessageConverter.write(AbstracthttpMessageConverter.java:207)    org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:148)    org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:90)    org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:193)    org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:71)    org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:122)    org.springframework.web.servlet.mvc.method.annotation.RequestMapPingHandlerAdapter.invokeHandleMethod(RequestMapPingHandlerAdapter.java:749)    org.springframework.web.servlet.mvc.method.annotation.RequestMapPingHandlerAdapter.handleInternal(RequestMapPingHandlerAdapter.java:689)    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)    org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:938)    org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:870)    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)    javax.servlet.http.httpServlet.service(httpServlet.java:620)    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)    javax.servlet.http.httpServlet.service(httpServlet.java:727)    org.springframework.web.filter.HIDdenhttpMethodFilter.doFilterInternal(HIDdenhttpMethodFilter.java:77)    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)root causecom.sun.istack.internal.SAXException2: class sample.User nor any of its super class is kNown to this context.javax.xml.bind.JAXBException: class sample.User nor any of its super class is kNown to this context.    com.sun.xml.internal.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:235)    com.sun.xml.internal.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:250)    com.sun.xml.internal.bind.v2.runtime.property.SingleReferenceNodeProperty.serializeBody(SingleReferenceNodeProperty.java:102)    com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:343)    com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:582)    com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:325)    com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:483)    com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:308)    com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:236)    org.springframework.http.converter.xml.Jaxb2RootElementhttpMessageConverter.writetoResult(Jaxb2RootElementhttpMessageConverter.java:135)    org.springframework.http.converter.xml.AbstractXmlhttpMessageConverter.writeInternal(AbstractXmlhttpMessageConverter.java:66)    org.springframework.http.converter.AbstracthttpMessageConverter.write(AbstracthttpMessageConverter.java:207)    org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:148)    org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:90)    org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:193)    org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:71)    org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:122)    org.springframework.web.servlet.mvc.method.annotation.RequestMapPingHandlerAdapter.invokeHandleMethod(RequestMapPingHandlerAdapter.java:749)    org.springframework.web.servlet.mvc.method.annotation.RequestMapPingHandlerAdapter.handleInternal(RequestMapPingHandlerAdapter.java:689)    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)    org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:938)    org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:870)    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)    javax.servlet.http.httpServlet.service(httpServlet.java:620)    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)    javax.servlet.http.httpServlet.service(httpServlet.java:727)    org.springframework.web.filter.HIDdenhttpMethodFilter.doFilterInternal(HIDdenhttpMethodFilter.java:77)    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)root causejavax.xml.bind.JAXBException: class sample.User nor any of its super class is kNown to this context.    com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:572)    com.sun.xml.internal.bind.v2.runtime.property.SingleReferenceNodeProperty.serializeBody(SingleReferenceNodeProperty.java:94)    com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:343)    com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:582)    com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:325)    com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:483)    com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:308)    com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:236)    org.springframework.http.converter.xml.Jaxb2RootElementhttpMessageConverter.writetoResult(Jaxb2RootElementhttpMessageConverter.java:135)    org.springframework.http.converter.xml.AbstractXmlhttpMessageConverter.writeInternal(AbstractXmlhttpMessageConverter.java:66)    org.springframework.http.converter.AbstracthttpMessageConverter.write(AbstracthttpMessageConverter.java:207)    org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:148)    org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:90)    org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:193)    org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:71)    org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:122)    org.springframework.web.servlet.mvc.method.annotation.RequestMapPingHandlerAdapter.invokeHandleMethod(RequestMapPingHandlerAdapter.java:749)    org.springframework.web.servlet.mvc.method.annotation.RequestMapPingHandlerAdapter.handleInternal(RequestMapPingHandlerAdapter.java:689)    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)    org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:938)    org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:870)    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)    javax.servlet.http.httpServlet.service(httpServlet.java:620)    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)    javax.servlet.http.httpServlet.service(httpServlet.java:727)    org.springframework.web.filter.HIDdenhttpMethodFilter.doFilterInternal(HIDdenhttpMethodFilter.java:77)    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
最佳答案只需将produce = MediaType.APPliCATION_JsON_VALUE添加到@RequestMapPing 总结

以上是内存溢出为你收集整理的java – 为什么下面的Spring Boot HATEOAS与mongodb不起作用(MarshalException)?全部内容,希望文章能够帮你解决java – 为什么下面的Spring Boot HATEOAS与mongodb不起作用(MarshalException)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1267225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)