1

我将以下内容从浏览器传递到服务器

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。

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

4

2 回答 2

2

AFAIK,没有 Jersey (JAX-RS) 机制将 JSON 解析为表单数据。表单数据应该是类似的形式

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

wherefirstNamelastName一般都是name表单输入元素中的属性值。您可以使用 jQuery 通过一个serialize()方法轻松地序列化字段值。

所以你可能有一些看起来更像类似的东西

<form id="post-form" action="/path/to/resource">
    Client Name: <input type="text" name="clientName"/>
</form>
<input id="submit" type="button" value="Submit"/>
<script>
    $("#submit").click(function(e) {
        $.ajax({
            url: $("form").attr("action"),
            data: $("form").serialize(),
            type: "post",
            success: processResponse,
            contentType: "application/x-www-form-urlencoded"
        });
    });
    function processResponse(data) {
        alert(data);
    }
</script>
于 2014-11-17T09:03:49.283 回答
1

您是否像这样定义了 Requestmapping:

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

和html:

<form action="submitclient" method="post">
    ...
</form>

另请查看您的 json 对象。我相信你应该发送这样的东西:

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

?

于 2014-11-17T08:01:56.010 回答