Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java REST@FormParam为空_Java_Rest_Jersey_Jax Rs_Form Parameter - Fatal编程技术网

Java REST@FormParam为空

Java REST@FormParam为空,java,rest,jersey,jax-rs,form-parameter,Java,Rest,Jersey,Jax Rs,Form Parameter,我将以下内容从浏览器传递到服务器 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, st

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

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


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

您是否定义了如下请求映射:

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

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

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

firstName=Stack&lastName=Overflow (or in your case clientName=someName)
<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>
其中,
firstName
lastName
通常是表单输入元素中的
name
属性值。您可以使用jQuery通过一个方法轻松地序列化字段值

所以你可能有一些看起来更像

firstName=Stack&lastName=Overflow (or in your case clientName=someName)
<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>

客户名称:
$(“#提交”)。单击(功能(e){
$.ajax({
url:$(“表单”).attr(“操作”),
数据:$(“表单”).serialize(),
类型:“post”,
成功:processResponse,
contentType:“application/x-www-form-urlencoded”
});
});
函数processResponse(数据){
警报(数据);
}

感谢您指出这一点。我使用了
var formData=$(“#formname”).serializeArray()
这样就解决了问题。感谢。@user75ponic我遇到了这个问题,我发现输入元素需要设置name属性。在本例中,要使
“clientName”
在java代码中具有值,元素需要具有属性
name=“clientName”
。那应该行!