簡體   English   中英

@FormParam不適用於GET方法-RestEasy

[英]@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM