java - 查询参数名称可以是可变的吗?像: @QueryParam ("//anything")

标签 java java-ws

我有一个资源类,其中有一个@GET,它采用一个称为操作的查询参数(这应该是静态的),然后我想采用可变数量的其他查询参数,这些参数可以命名为任何名称。

我的第一个想法是做这样的事情:

public Response get(
    @QueryParam("operation") String operation, 
    @QueryParam("list") final List<String> list) {
    //do stuff
}

这里的问题是我必须提出如下请求:

...?operation=logging&list=ABC&list=XYZ

虽然我想要的是能够拥有这样的东西:

...?operation=logging&anything=ABC&something_else=XYZ

有没有办法使列表查询参数@QueryParam(//anything)?

在收集一些信息时,我遇到了这种方法:

@GET
public void gettest(@Context UriInfo ui) {
    MultivaluedMap<String, String> queryParams = ui.getQueryParameters();   
    String operation = queryParams.getFirst("operation");   
    for (String theKey : queryParams.keySet()) {
        System.out.println(queryParams.getFirst(theKey));
        //do stuff with each other query param
    }   
}

multivaluedmap 是解决这种情况的方法吗?或者有没有办法使用变量查询参数名称?或者更好的方法?谢谢。

编辑/更新:

这是使用 javax.ws.rs

用例是:此应用程序用作模拟响应的工具(用于其他应用程序中的测试目的)。通过查找“操作”然后查找某种“id”,可以从数据库中检索模拟响应。使用的实际 id 可以是给定的任何“列表”查询参数。这样做的原因是为了让不同的应用程序能够灵活地使用此模拟服务——应用程序中的 URL 可以通过多种不同的方式构建,这样就无需更改代码即可使用模拟服务。

最佳答案

就像这个 question ,使用 map :

@RequestMapping(value = {"/search/", "/search"}, method = RequestMethod.GET)
public String search(
@RequestParam Map<String,String> allRequestParams, ModelMap model) {
   return "viewName";
}

关于java - 查询参数名称可以是可变的吗?像: @QueryParam ("//anything"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47895931/

相关文章:

java Canvas 抽绳

c# - 使用 JavaWS 服务时可以查看 .NET 生成的 XML 吗?

java - JAX-WS 2.2 和 JDK6 与 maven

java - 无法启动应用程序 "javaws"

java - 通过 AppEngine 调整 Jersey 的加载时间

java - Play Framework REST API 调用

java - 如何将整数的 "word"表示形式写入 Java 中的文件?

java - Reduce for parallel stream without combiner 由多个线程正确执行。在这种情况下我什么时候应该使用组合器?

java - 在java中将word文件另存为html

java - Java 中的 Davies-Bouldin 指数