如何使用JaxRS Rest响应简单的排序查询?

时间:2013-12-20 03:37:55

标签: java jax-rs

Dojo Toolkit使用JsonRest store通过REST调用与您的服务器进行通信。在dGrid中,列标题可排序。单击列时,会向服务器调用排序详细信息。我不知道如何处理这些在我的Java代码中进行排序的调用。使用 Jax-RS(Jersey 1.13),如何构建匹配并响应下面显示的排序查询字符串的restful方法?

例如,按“ID”列排序会产生此http请求:

/rest/Subcategory/?sort(-subcatId)

我不清楚如何使用此语法提取排序查询字符串值。我试过@QueryParam("sort")但失败了。我目前正在Java中搜索排序示例。我也在搜索Restful Services的编码约定。

3 个答案:

答案 0 :(得分:0)

如果您的网址类似于: -

/rest/Subcategory/?sort=subCatID

@QueryParam("sort")应该有效。我没有多次使用Jersey,但在CXF中使用了很多次,这也是另一个JAX-RS规范实现。

CXF的页面http://cxf.apache.org/docs/jax-rs-basics.html很好地解释了Jaxrs基础知识。希望这可以帮助。

答案 1 :(得分:0)

您可以将@ServletRequest作为资源方法的参数注入,然后检索查询字符串:

@GET
public Response getSubCategory(@Context HttpRequestServlet request) {
    ...
    request.getQueryString();
    ...
}

答案 2 :(得分:0)

为了让Dojo将其作为查询参数发送(即使用sort = + someValue或sort = -someValue,请确保设置

"Content-Type":"application/json"
"charset":"UTF-8"

var TrackableRest = declare([Rest, Trackable]);
    var interceptStore = new TrackableRest({
        target: 'rest/intercepts/', 
        accepts: "application/json",
        sortParam: 'sort',         
        rangeStartParam: 'offset',
        rangeCountParam: 'limit',
        headers:{
            'Accept': "application/json",
            'Content-Type':"application/json",
            'charset':"UTF-8"             
        },
        idProperty: 'id'
    });