Java 将多个@QueryParam映射到一个自定义实体

Java 将多个@QueryParam映射到一个自定义实体,java,jersey,jax-rs,Java,Jersey,Jax Rs,例如,我有课 class MyQuery { Date start; Date end; ChronoUnit scale; // ChronoUnit is enum } 我想声明如下方法: @Path("/myreport") public Response generateReport(@EntityFromQuery MyQuery query) { // logic to generate. } 我希望当有东西碰到url时调用这个方法 /myreport?开

例如,我有课

class MyQuery {
   Date start;
   Date end;
   ChronoUnit scale; // ChronoUnit is enum
}
我想声明如下方法:

@Path("/myreport")
public Response generateReport(@EntityFromQuery MyQuery query) {
   // logic to generate.
}
我希望当有东西碰到url时调用这个方法

/myreport?开始=2015-01-01和结束=2015-01-31和规模=周

我用的是运动衫。是否有任何内部工具来实现这一点?
或者我需要编写我自己的MessageBodyReader?

,它随jersey一起提供(您可能需要先查看一些教程…)。您可能更容易接受传入请求的所有GET参数作为字符串,并在以后转换它们:

@GET
@Path("/myreport")
@Produces(MediaType.{whatever you want to return})
public Response generateReport(@QueryParam("start") String start, @QueryParam ("end") String end, @QueryParam ("scale") String scale) {
   // convert from string to date and from string to chroneUnit
   //do some logic..
}

您可以查看
@BeanParam
注释,该注释将在JAX-RS资源的Java方法中代替
@EntityFromQuery

MyQuery
类中,您只需要用
@QueryParam(“start”)
等注释getter


HTH.

谢谢您的回复,但我需要映射到一个实体。顺便说一句,您可以在param中使用枚举,而无需额外转换(以及任何带有公共构造函数的类,带有一个string参数或静态valueOf(string)方法)。原因是:我有几个不同的查询,这些查询将来会更改。我不希望每次向查询添加新的param时都更改转换。