1

我有 HTML 表单数据并被传递给 RESTful POST 方法。我注意到如果 @FormParam 被声明为

@POST
public void commitProjects(
@FormParam("projectId")
        int projectId)

如果 projectId 为 null 或为空,那么当从浏览器执行 POST 方法时,我会收到 400 Bad Request错误消息。

这可能是什么原因,克服这种情况的最佳方法是什么?

编辑 1

从浏览器

projectDesc=test&projectId=

和方法从 Jquery 调用为

method: 'POST',
//dataType: "json",
contentType : "application/x-www-form-urlencoded",
url: '/rest/projects',

HTTP 标头

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:625
Content-Type:application/x-www-form-urlencoded
Cookie:JSESSIONID=0a0a0a0a231b787e42dd10d840d3b035d5998c574416
Host:xxxxxx:8987
Origin:http://xxxxx:8987
Referer:http://xxxxx:8987/project/test.jsp
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36

表格数据

projectDesc=test
projectId=
4

2 回答 2

2

使用@DefaultValue

@POST
public void commitProjects(@FormParam("projectId") @DefaultValue("0") int projectId)
于 2013-11-25T12:11:07.963 回答
2

nullempty无法解析为 32 位有符号整数,并返回 HTTP 400(客户端错误)响应。

如果值不存在,则设置一个默认值如下

@POST
public void commitProjects( 
    @DefaultValue("0") @FormParam("projectId") int projectId
    )

更多细节

于 2013-11-25T12:16:51.187 回答