Spring   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java – 为什么下面的Spring Boot HATEOAS与mongodb不起作用(MarshalException)?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

我的pom:

<><><><><>

我的“UserresourceAssembler.java”:

@Component
class UserresourceAssembler implements resourceAssembler<>

我的“User.java”代表@L_498_3@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.MarshalException

type Exception report

message Could not marshal [resource { content: {id:null,links: [] }]: null; nested exception is javax.xml.bind.MarshalException

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.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.HiddenhttpR_209_11845@ethodFilter.doFilterInternal(HiddenhttpR_209_11845@ethodFilter.java:77)
    org.springframework.web.filter.oncePerrequestFilter.doFilter(OncePerrequestFilter.java:108)
root cause

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.]
    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.HiddenhttpR_209_11845@ethodFilter.doFilterInternal(HiddenhttpR_209_11845@ethodFilter.java:77)
    org.springframework.web.filter.oncePerrequestFilter.doFilter(OncePerrequestFilter.java:108)
root cause

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.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.HiddenhttpR_209_11845@ethodFilter.doFilterInternal(HiddenhttpR_209_11845@ethodFilter.java:77)
    org.springframework.web.filter.oncePerrequestFilter.doFilter(OncePerrequestFilter.java:108)
root cause

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.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.HiddenhttpR_209_11845@ethodFilter.doFilterInternal(HiddenhttpR_209_11845@ethodFilter.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)?所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。