请求可以像服务器一样进入服务器:
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接受任何形式的正则表达式。
我也尝试将名称字段留空,但随后意识到排序(+浏览器)将成为关键,因此将其留空并没有帮助。 谢谢:))
答案 0 :(得分:1)
也许做最简单的事情 - 直接使用HTTP请求:
public Response getData(@Context HttpServletRequest req) throws NamingException {
String qParams = req.getQueryString();
//apply regexp to get needed parameter from qParams
}