将枚举值列表作为HTTP查询参数传递

时间:2016-05-04 11:23:07

标签: java list http get query-parameters

我想将枚举值列表作为HTTP查询参数传递。服务器端的入口点如下所示:

 // Add
repo, err := git.OpenRepository(dir)
index, err := repo.Index()
err = index.AddAll([]string{}, git.IndexAddDefault, nil)
treeId, err := index.WriteTreeTo(repo)
tree, err := repo.LookupTree(treeId)

// Commit
sig := &git.Signature{
    Name:  userName,
    Email: userName + "@" + beego.AppConfig.String("userdata::emailserver"),
    When:  time.Now(),
}
commitId, err := repo.CreateCommit("HEAD", sig, sig, message, tree)

// Push
remote, err := repo.LookupRemote("origin")    
err = remote.Push([]string{"refs/heads/master"}, nil, sig, message)

这不能修改。请注意@GET @Path("/getMyResult") public MyResultType getMyResult(@QueryParam("me") final List<MyEnum> myEnums) 包含值MyEnumMyValue1MyValue2MyValue3。 (MyValue4与此问题无关。)如下所示只传递一个值,效果很好(这对我来说有点奇怪):

MyResultType

但是,以这种方式传递元素列表:

http://localhost/getMyResult?me=MyValue1

或者这样:

http://localhost/getMyResult?me=[MyValue1,MyValue3,MyValue4]

或者这样:

http://localhost/getMyResult?me=MyValue1,MyValue3,MyValue4

不起作用,它抛出这样的异常(第一个选项的错误消息):

http://localhost/getMyResult?me=["MyValue1","MyValue3","MyValue4"]

有谁能告诉我如何将RESTEASY001720: Unable to extract parameter from http request: javax.ws.rs.QueryParam(\"me\") [...] No enum constant com.mycompany.myapp.MyEnum.[MyValue1,MyValue3,MyValue4] 元素列表作为HTTP GET查询参数传递?谢谢!

1 个答案:

答案 0 :(得分:4)

为此(以及需要传递List的其他情况),您必须为每个元素插入参数的名称。

这样:

http://localhost/getMyResult?me=MyValue1&me=MyValue3&me=MyValue4