当前位置: 首页 > 知识库问答 >
问题:

Spring靴样品hateoas不工作

董胡非
2023-03-14

我试图运行位于https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-hateoas的hateoasSpring启动示例(我试图运行版本1.2.6. RELEASE)。

当访问示例提供的客户服务时,我得到一个MarshalException:

无法列表[Resources{content:[sample.domain.Customer@72c01d5a,sample.domain.Customer@5ef1ebf9,sample.domain.Customer@237de11a],链接:[http://localhost:8080/customers; rel="自"] }]: null;嵌套异常javax.xml.bind.MarshalException-链接异常:[com.sun.istack.internal.SAXException2: classsample.domain.客户及其任何超类在此上下文中是已知的。javax.xml.bind.JAXBException: classsample.domain.客户及其任何超类在此上下文中是已知的。]

这是由以下代码引起的:

    @RequestMapping(method = RequestMethod.GET)
HttpEntity<Resources<Customer>> showCustomers() {
    Resources<Customer> resources = new Resources<Customer>(this.repository.findAll());
    resources.add(this.entityLinks.linkToCollectionResource(Customer.class));
    return new ResponseEntity<Resources<Customer>>(resources, HttpStatus.OK);
}

而我也许可以实现我自己的

public class CustomerResources extends Resources<Customer> {

如果可能的话,我想避免这种情况。

此外,如果必须这样,我很困惑为什么示例中不是这样。我错过了什么吗?我如何让样本工作?

提前感谢!

共有2个答案

贺宜修
2023-03-14

使用HATEOAS时,异常:javax.xml.bind.MarshalException发生在您没有使用URI添加正确的生产者类型时。

无论何时在Spring boot中使用HATEOAS,都需要添加products类型为application/hal-json。

例如:@PostMapping(value=“/yourUri”,products=”应用程序/hal-json“)

这对我有用!

辛成周
2023-03-14

该示例旨在使用JSON,并在默认情况下提供JSON。我猜您正在发送一个带有请求头的请求,该头请求应用程序/xml。请尝试删除标头,或者改为请求应用程序/json。

 类似资料:
  • 我跟着Spring走。io是一个关键的教程,可以让REST API与MySQL DB一起启动,一切都进展顺利。然而,我发现了一个我无法配置或解决的行为。 当我使用内置功能从PagingAndSortingRepository中检索资源时,生成的剩余资源会自动分页,并用有用的HAL链接(链接、self、搜索、链接资源等)进行封装。我想用这个。 当我实现我的控制器来定制PostMapping行为并引入

  • 我的服务器运行在localhost:8080(spring boot app)上,前端运行在localhost:3000(angular app)上。问题是我想从前端向后端服务器发出请求。我熟悉cors,但对我来说不起作用。我已将此添加到我的服务器: ,但我仍然得到 XMLHttpRequest无法加载http://localhost:8080/cars.请求被重定向到http://localho

  • 我使用的是Spring-BootV1.1.10.Release,用于基于spring的web应用程序。我的数据库是Postgres&用于我的数据库迁移的Flyway。 postgres sql脚本文件由flyway-maven-plugin通过以下maven命令成功执行,即mvn compile flyway:migrate 但是同一个Postgres sql脚本文件抛出了psqlexceptio

  • 我使用带有spring boot的jersey,我有一个异常映射器: 同样注册,并使用调试,我可以看到这个映射器被正确调用,但是无论使用junit测试还是手动测试,最终响应仍然返回404。 以下是测试: 然后在泽西岛配置中注册:

  • 我尝试切换到SpringBoot精简jar,以便jar中不包含依赖项。我正在使用gradle插件: 但是,在运行任务时,我收到以下错误消息: 清单属性的值不能为null(Key=Star-Class)。 我试图通过几种方式指定属性: 使用gradle插件并指定属性也不起作用。没有瘦罐插件,一切都按预期工作。 谢谢你的帮助!

  • 我是Spring Boot的新手,我有一个Spring Boot应用程序似乎忽略了@PreDestroy注释-当我从命令行或通过Eclipse运行时,我从来没有看到@PreDestroy代码在应用程序关闭时运行(例如通过ctrl-c) 代码如下。。。 应用java: 消息处理器配置: 消息处理器: