1

我设置了一个方法如下:

@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) 主机名/服务/stepActivity/activityLocatorID/item/1

2) 主机名/服务/stepActivity/activityLocatorID/item/1?mode=5

但是一旦我添加了第二个查询参数,该函数就不再被调用,并且我收到一条错误消息作为响应:

主机名/服务/stepActivity/SerializedSession:activitylocatorID/item/1?mode=5&options=blah

知道我做错了什么吗?!

4

2 回答 2

2

尝试更改ItemWidgetInitOptions optionsString options. 如果它是可选的,您可能希望给它一个默认值。

于 2012-09-07T18:58:08.720 回答
0

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

    @QueryParam("options")
    ItemWidgetInitOptions options

根据球衣文件

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

  1. 是原始类型;

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

  3. 有一个名为 valueOf 或 fromString 的静态方法,它接受单个 String 参数(例如,参见 Integer.valueOf(String) 和 java.util.UUID.fromString(String));或者

  4. 是 List、Set 或 SortedSet,其中 T 满足上述 2 或 3。生成的集合是只读的。

于 2013-01-04T08:49:42.630 回答