リクエストは次のようにサーバーに送信されます。
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 が任意の形式の正規表現を受け入れるようには見えません。
名前フィールドも空白のままにしてみましたが、ソート(+ブラウザ)がキーになることに気付いたので、空白のままにしても役に立ちませんでした。ありがとう :)