[英]@FormParam does not work with GET method-RestEasy
我正在使用Resteasy學習Web服務
我正在使用@FormParam
做一個簡單的基本休息@FormParam
。 我的示例在請求方法是POST
但在我將請求方法更改為GET
時不起作用
@Path("/form")
public class FromParamService {
@POST
@Path("/add")
public Response addUser(
@FormParam("name") String name,
@FormParam("age") int age) {
return Response.status(200)
.entity("addUser is called, name : " + name + ", age : " + age)
.build();
}
@GET
@Path("/adduser")
public Response addUser1(
@FormParam("name") String name,
@FormParam("age") int age) {
return Response.status(200)
.entity("addUser is called, name : " + name + ", age : " + age)
.build();
}
}
GET的輸出是
調用addUser,name:null,age:0
用POST輸出
addUser被叫,名字:Abhi,年齡:23歲
GET請求的jsp是
<html><body>
<form action="rest/form/adduser" method="get">
<p>
Name : <input type="text" name="name" />
</p>
<p>
Age : <input type="text" name="age" />
</p>
<input type="submit" value="Add User" />
</form></body></html>
而POST請求的Jsp是
<html><body>
<form action="rest/form/add" method="post">
<p>
Name : <input type="text" name="name" />
</p>
<p>
Age : <input type="text" name="age" />
</p>
<input type="submit" value="Add User" />
</form></body></html>
我的問題是為什么我無法使用@FormParam
使用GET請求獲取值?
GET請求的表單的默認行為是將鍵/值放在查詢字符串中 。 如果您查看URL欄,您可能會看到類似的內容
http://localhost:8080/app/form/addUser?name=something&age=100
與POST請求相反,此oart name=something&age=100
實際上將位於請求的正文中,而不是URL中。 這就是@FormParam
工作原理,就像application/x-www-form-urlencoded
數據類型一樣。 GET請求應該沒有正文,因此數據將在URL中發送。
要使GET請求起作用,我們需要一個與查詢字符串一起使用的不同注釋。 那個注釋是@QueryParam
。 因此,只需將@FormParam("name")
替換為@FormParam("name")
, @QueryParam("name")
替換為年齡
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.