JAXRS - 查询参数是空字符串

时间:2017-12-08 06:12:11

标签: jax-rs

我正在尝试创建一个简单的休息服务,该服务读取URL中的查询参数。

public Response getBalanceSnapshot(
    @DefaultValue("abc") @QueryParam("typeofid") String t,
    @DefaultValue("def") @QueryParam("id") String i) {

    //    public Response getBalanceSnapshot(@Context UriInfo uriInfo) {
    //    String t = uriInfo.getQueryParameters().getFirst("parameter1");
    //    String i = uriInfo.getQueryParameters().getFirst("parameter1");

    if (i == null) {
        throw new WebApplicationException(
                Response.status(HttpURLConnection.HTTP_BAD_REQUEST)
                        .entity("name parameter is mandatory")
                        .build());
    }

    if (t.length() == 0) {
        return Response.status(200).entity("empty string").build();
    }

    return Response.status(200)
            .entity("query params are " + t + " and " + i)
           .build();
}

如果要求是 - http://localhost:8080/sampleresource/firstendpoint?typeofid=acc_id&id=1234

然后预期的回复是query params are acc_id and 1234。 实际的回应是。 query params are

字符串不为空。但两个长度都是0

我也尝试使用URI信息来获取参数。但这会产生不同的错误。

1 个答案:

答案 0 :(得分:0)

让我们测试一下Java的其他一些功能。

public class Test {
    public static void main(final String... args) {
        final String s = null;
        System.out.println("aaa" + s + "bbb");
    }
}

程序打印

aaanullbbb

aaabbb

当你看到

query params are  and 

query params are acc_id and 1234

这意味着t蚂蚁i实际上是"",而不是null

您确定要求采用正确的方法吗?