我正在使用Jersey,并且有以下两种RESTful方法:

@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public List<Activity> getAllActivities() {
    return activityRepository.findAllActivities();
}




@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@PathParam("{activityId}")
public Activity getActivity(@PathParam("activityId") String activityId) {
    return activityRepository.findActivity(activityId);
}


在添加第二种方法之前,一切工作正常。但是,我的tomcat现在给出以下错误。

org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] A resource model has ambiguous (sub-)resource method for HTTP method GET and input mime-types as defined by @Consumes and @Produces annotations


有什么线索吗?

最佳答案

您应该使用@Path("{activityId}")而不是@PathParam("{activityId}")

文档指出

@PathParam


  将URI模板参数的值或包含模板参数的路径段绑定到资源方法参数,资源类字段或资源类bean属性。


@路径


  标识资源类或类方法将为其服务的URI路径。


因此,应使用@Path定义资源方法将服务的URI路径。

09-25 20:17