[英]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)
其中firstName
和lastName
通常是表單輸入元素中的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.