Java Rest不起作用使用两个queryParameters时

时间:2012-09-07 17:51:04

标签: java rest jax-rs

我已经设置了如下方法:

@GET
@Produces({MediaType.APPLICATION_JSON})
@Path("/{activityLocator}/item/{itemUid}")
@Override
public Obj getItemWidgetParams(
        @PathParam("activityLocator")
        String activityLocator,
        @PathParam("itemUid")
        String itemUid,
        @QueryParam("options")
        ItemWidgetInitOptions options,
        @QueryParam("mode")
        String mode) throws Exception
{
    return something;
}

问题是当我不使用查询参数或只使用一个(以下两个uri中的任何一个)时,会调用此函数:

1)hostname / service / stepActivity / activityLocatorID / item / 1

2)hostname / service / stepActivity / activityLocatorID / item / 1?mode = 5

但是只要我添加第二个查询参数,就不再调用该函数,我收到一条错误消息:

主机名/服务/ stepActivity / SerializedSession:activitylocatorID /项目/ 1模式= 5&安培;选项=嗒嗒

知道我做错了吗?!

2 个答案:

答案 0 :(得分:2)

尝试将ItemWidgetInitOptions options更改为String options。 如果是可选的,您可能想要给它一个默认值。

答案 1 :(得分:0)

正如km1所说,您可能需要更改参数选项。

    @QueryParam("options")
    ItemWidgetInitOptions options

根据jersey documentation

  

通常,方法参数的Java类型可以是:

     
      
  1. 是原始类型;

  2.   
  3. 有一个接受单个String参数的构造函数;

  4.   
  5. 使用名为valueOf的静态方法或接受单个的fromString   字符串参数(例如,参见Integer.valueOf(String)和   java.util.UUID.fromString(字符串));或

  6.   
  7. Be List,Set或SortedSet,其中T满足上面的2或3。   生成的集合是只读的。

  8.