我在 Glassfish 4 上使用 Jersey 2.3.1。
我的资源方法类似于以下:
@POST
@Consumes("application/x-www-form-urlencoded")
@Path("/update")
public Response update(MultivaluedMap<String, String> formParams){
//business logic
//return appropriate Response object
}
我总是formParams.size()
归零。为什么提交的表单参数在对象中不可用MultivaluedMap
?
服务器日志中的以下警告消息:
警告:对 URI 的 servlet 请求http://localhost:8080/myApp/resource/update
在请求正文中包含表单参数,但请求正文已被 servlet 或访问请求参数的 servlet 过滤器使用。只有使用 @FormParam 的资源方法才能按预期工作。通过其他方式消耗请求正文的资源方法将无法按预期工作。
(我在禁用所有 Servlet 过滤器之前和之后进行了测试。我没有使用任何 Jersey 过滤器)