java-@FormParam不适用于GET方法-RestEasy
作者:互联网
我正在用Resteasy学习Web服务
我正在做一个简单的基本示例,可以轻松使用@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 is called, name : null, age : 0
与POST输出是
addUser is called, name : Abhi, age : 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>
和Jsp的POST请求是
<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请求的表单的默认行为是将键/值放在query string中.如果在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”)替换为@QueryParam(“ name”),并保留相同的年龄
标签:rest,jax-rs,resteasy,java,jsp 来源: https://codeday.me/bug/20191028/1952392.html