请求可以像这样进入服务器:
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) 将是关键,因此将其留空并没有帮助。谢谢 :)