代码之家  ›  专栏  ›  技术社区  ›  Subodh Joshi

Resteasy如何更新/添加查询参数?

  •  1
  • Subodh Joshi  · 技术社区  · 6 年前

    在旧版本中[ 3.0.7条 ]我们可以更新resteasy的查询参数

    requestContext.getUriInfo().getQueryParameters()
                            .add("limit", recordLimit);
    

    但在用版本更新之后[ 3.5.1条 ],以上代码将抛出错误 UnmodifiableMultivaluedMap

    然后试图写下这段代码

    UriBuilder  uriBuilder = requestContext.getUriInfo().getRequestUriBuilder();
    uriBuilder.queryParam("limit", recordLimit);
    

    以及以下代码

    UriBuilder  uriBuilder = requestContext.getUriInfo().getRequestUriBuilder();
    uriBuilder.matrixParam("limit", recordLimit);
    

    有人能解释一下更新查询参数的正确方法吗?

    编辑1 :即使这样也行不通

    UriBuilder  uriBuilder = requestContext.getUriInfo().getRequestUriBuilder();
    uriBuilder.replaceQueryParam( "limit", recordLimit);
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Subodh Joshi    6 年前

    最后我找到了解决方案,在旧版本中,我们正在做类似的事情来动态添加查询参数

    requestContext.getUriInfo().getQueryParameters()
                            .add("limit", recordLimit);
    

    但是在3.5.1版本中,它是一个多重映射,所以上面的场景不允许这样做,所以这里是实现这一点的新方法

    UriBuilder  uriBuilder = requestContext.getUriInfo().getRequestUriBuilder() ;
    uriBuilder.queryParam("limit", recordLimit);
    requestContext.setRequestUri(uriBuilder.build());