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”
。那应该行!