【问题标题】:How to respond to a simple sort query using JaxRS Rest?如何使用 JaxRS Rest 响应简单的排序查询?
【发布时间】:2014-01-08 20:35:45
【问题描述】:

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

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

/rest/Subcategory/?sort(-subcatId)

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

【问题讨论】:

标签: java jax-rs


【解决方案1】:

如果您的网址类似于:-

/rest/Subcategory/?sort=subCatID

@QueryParam("sort") 应该可以工作。我与 Jersey 合作的次数不多,但在 CXF 中多次使用它,这也是另一个 JAX-RS 规范实现。

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

【讨论】:

  • 我也是这么想的。但是,Dojo Framework 使用上面显示的格式:?sort(-subcatId)?sort(+subcatId)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    为了让 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'
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 2020-01-09
      • 2020-01-31
      • 2019-09-11
      • 1970-01-01
      相关资源
      最近更新 更多