我正在使用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路径。