REST @FormParam为null

我有以下从浏览器传递到服务器

Status Code:204 No Content Request Method:POST Content-Type:application/x-www-form-urlencoded Form Data json:{"clientName":"PACK","status":"success","message":"successful!"} 

并在jsp代码中

 var loginData = { clientName: cList, status: "success", message: "successful!" }; $.ajax({ url: subUrl, type: 'POST', contentType : "application/x-www-form-urlencoded", data: { json: JSON.stringify(loginData) }, success: function (data) { handleLoginResult(data); } }); 

在Java代码中我有

 @POST public Object persistResetPasswordLogs(@FormParam("clientName") String clientName) { try { log.info("in rest method ??? "+clientName); ....... ....... 

在服务器中,我将clientName作为null。

可能是什么原因,我该如何解决这个问题?

AFAIK,没有Jersey(JAX-RS)机制将JSON解析为表单数据。 表格数据应采用类似的forms

 firstName=Stack&lastName=Overflow (or in your case clientName=someName) 

其中firstNamelastName通常是表单输入元素中的name属性值。 您可以使用jQuery轻松序列化字段值,使用单个serialize()方法。

所以你可能会看到更像某些东西的东西

 
Client Name:

你有没有像这样定义Requestmapping:

 @POST @Path("/submitclient") // your request mapping for 'subUrl' public Object persistResetPasswordLogs(@FormParam("clientName") String clientName) 

和HTML:

 
...

还要看看你的json对象。 我相信你应该发送这样的东西:

 var loginData = { clientName: "dit" // get it from input };