簡體   English   中英

REST @FormParam為null

[英]REST @FormParam is 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解析為表單數據。 表格數據應該是類似的形式

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

其中firstNamelastName通常是表單輸入元素中的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>

你有沒有像這樣定義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
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM