【问题标题】:@BeanParam gives exception A message body reader for Java class was not found@BeanParam 给出异常找不到 Java 类的消息正文阅读器
【发布时间】:2015-10-06 15:35:41
【问题描述】:

我正在尝试制作基于运动衫的 Web 服务。在这种情况下,如果我使用 @FormParam 获取输入参数,它可以正常工作:

@POST
@Consumes({MediaType.TEXT_PLAIN, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.TEXT_HTML, "application/x-www-form-urlencoded"})
@Path("/registeruser")
public Response registerUser(@FormParam ("email") String email,@FormParam ("name") String name ){
    System.out.println("Inside register device");
    System.out.println("registered" + email);
    return null;
}

但是当我尝试使用 @BeanParam 时它不起作用并给了我一个异常

@POST
@Consumes({MediaType.TEXT_PLAIN, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.TEXT_HTML, "application/x-www-form-urlencoded"})
@Path("/registeruser")
public Response registerUser(@BeanParam UserForm userForm ){
    System.out.println("Inside register device");
    service.registerUser(userForm);
    System.out.println("registered" + userForm.getEmail());
    return null;
}

找不到 Java 类 com.stc.dms.forms.UserForm、Java 类型类 com.stc.dms.forms.UserForm 和 MIME 媒体类型 application/octet-stream 的消息正文阅读器。

【问题讨论】:

  • 1) 为什么要接受 GET 请求的请求正文? 2)您使用的是什么球衣版本? 3) 你是否能够让@BeanParam 在其他情况下工作,比如使用一些@QueryParams?
  • 不,我做不到。它的 POST 请求只是我错误地输入了 GET
  • 你现在可以试试。使用只有几个 @QueryParams 的 bean 制作一个不同的 GET 方法。
  • 我刚刚用@QueryParam 尝试过,它工作正常,但我不想继续添加这样的参数。我想 Object 作为输入
  • 你为什么要消费这么多不同的媒体类型?必须尝试将其限制为 APPLICATION_FORM_URLENCODED,并确保在客户端上将 Content-Type 设置为 application/x-www-form-urlencded?

标签: rest jersey


【解决方案1】:

您无需使用@BeanParam 将对象作为输入传递。像这样传递它:

@POST
@Path("register")
@Consumes(MediaType.APPLICATION_JSON)
public Response registerUser(UserForm dto) {
  // ...
}

只需确保包含用于生成/使用 json 的库。如果客户端在 javascript 中,则不需要其他任何内容(只需在表单对象上使用 JSON.stringify()),为服务器添加一些 json 库,例如 Jackson

编辑: 如果您想坚持使用@BeanParam,请查看本教程here。基本上,您似乎不需要指定媒体类型,因为 Jersey 会为您处理。

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 2012-01-25
    • 2014-06-05
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多