java - MyClass 在 Jersey 资源方法中作为 @PathParam

标签 java rest jersey

在我的 Jersey 资源中,我有:

@GET
@Path("/{dataType}/{dataSet}")
public Response search(
        @PathParam("dataType") String dataType,
        @PathParam("dataSet") String dataSet){
    ...
}

我想使用自己的类而不是字符串:

@GET
@Path("/{dataType}/{dataSet}")
public Response search(
        @PathParam("dataType") DataType dataType,
        @PathParam("dataSet") DataSet dataSet){
    ...
}

然而,DataSet 依赖于 DataType(DataSet 在其构造函数中使用 DataType)。有没有办法用 Jersey 做到这一点?

最佳答案

您可以使用 Jersey 的内置转换,使用静态 fromString() 方法(请参阅 Jersey documentation ),或使用自定义提供程序来处理路径段。对于后者,您将需要一个类似这样的类:

public class MyProvider extends PerRequestTypeInjectableProvider<Context, DataType> {
    @Context UriInfo uriInfo;

    public Injectable<DataType> getInjectable(ComponentContext componentCtx, Context ctx) {
        uri.getPathSegments();
        ...
    }
}

关于java - MyClass 在 Jersey 资源方法中作为 @PathParam,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15413516/

相关文章:

java - 如何使用 '.'(点)作为小数点分隔符且浮点后不超过 3 位数字的 float 生成字符串?

java - jython 独立 jar 减少了软件包列表?

java - 我该如何拆分?

c# - Nhibernate HQL SQL Server 2005/2008 包含稳定

javascript - Meteor 集成测试,使用 jasmine 在 Velocity 镜像中休息 api 端点

php - 使用 REST Web 服务重构数据库结构不稳定的 PHP 应用程序?

java - Jersey @ManagedAsync 并在 HTTP 线程和工作线程之间复制数据

jakarta-ee - Wildfly 15 和 Jersey - 尝试将多个服务定位器注册到单个服务定位器应用程序中

java - Jersey 的 jackson ,一个实体有多个序列化程序

java - 无法连接到tomcat网络服务