java - 自定义 Jersey 参数解码

标签 java jax-rs jersey-2.0

我收到一个像

这样的字符串作为查询参数
parameter=123,456,789

我想要直接在我的 Controller 中获取List<Integer>。像这样的事情:

@GET
@Path(REST_PATH)
@Produces(MediaType.APPLICATION_JSON)
public Response getSomeStuff(@MagicalThing("parameter") List<Integer> requiredList)

除了自定义提供程序和附加类型之外还可以做什么:

https://stackoverflow.com/a/6124014

更新:自定义注释解决了http://avianey.blogspot.de/2011/12/exception-mapping-jersey.html的难题

最佳答案

没有内置机制可以执行此操作。您需要在您的方法或提供程序中自行拆分该字符串,或者在您自己的具有带字符串参数的构造函数的对象中,例如:

public Response getSomeStuff(@QueryParam("parameter") MyList requiredList) {
    List<String> list = requiredList.getList();
}

MyList 可能在哪里:

 public class MyList {
    List<String>  list;
    public MyList(Srting parameter) {
        list = new ArrayList<String>(parameter.split(","));    
    }

    public List<String> getList() {
        return list;   
    }
}

然后用你的方法获取我的列表。

关于java - 自定义 Jersey 参数解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23541854/

相关文章:

java - 用java计算组合

JAX-RS 和 Maven 的 java.lang.ClassNotFoundException

java - 英语和 JAX-B 之间的语义/语法冲突

java 动态服务器 - 我可以有多个 web.xml 文件吗?

java - Jersey 2 替代 ServletContextListener

java - 编译器编译其他java文件

java - java游戏中按钮的大小

java - maven : test fails when calling from intellij

java - 拒绝向我的 JAX-RS 服务提供服务

java - 在 Jersey 2 中使用 Hystrix Java Servlet 和 Servlet 过滤器