2

请求可以像这样进入服务器:

http://localhost:8080/App/rest/data/?sort(+Browser )(来自dojo数据网格)

我想抓住?sort(+Browser)部分。问题是这是关键值,但每次都可能不同(例如,?sort(-username)等)目前,我这样做是这样的:

@GET
@Produces( { MediaType.APPLICATION_JSON })
public Response getData(@Context UriInfo ui) throws NamingException {
    MultivaluedMap<String, String> queryParams = ui.getQueryParameters();
    for (Entry<String, List<String>> entry : queryParams.entrySet()){
        if( Pattern.matches("sort.*", entry.getKey()) ){
          //do something with entry.getKey();
       }
    }
...

有没有比使用 for 循环更好/更简单的方法来获取此查询参数?而不是使用@Context UriInfo ui 我想我可以使用带有正则表达式的QueryParam,比如

  @GET
  @Produces( { MediaType.APPLICATION_JSON })
    public Response getData(@QueryParam("{sort.*}") String sortStr) throws NamingException { ...}

但是,QueryParam 似乎不接受任何形式的正则表达式。

我也尝试将 name 字段留空,但后来意识到 sort(+Browser) 将是关键,因此将其留空并没有帮助。谢谢 :)

4

1 回答 1

1

也许做最简单的事情 - 直接使用 HTTP 请求:

public Response getData(@Context HttpServletRequest req) throws NamingException {
  String qParams = req.getQueryString();
  //apply regexp to get needed parameter from qParams
}
于 2012-04-10T16:58:10.560 回答