编程语言
首页 > 编程语言> > java-@FormParam不适用于GET方法-RestEasy

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