2014-03-13 41 views
0

我是否可以通過註釋的java bean創建JAX-RS客戶端請求? 我有這樣一個bean:從Bean創建JAX-RS請求

public class Parameters implements State { 

    @QueryParam("testParameter") 
    private List<String> testParameters; 

    public List<String> getTestParameters() { 
     return testParameters; 
    } 

    public void setParameters(List<String> testParameters) { 
     this.testParameters = testParameters ; 
    } 
} 

,並希望建立像一個鏈接:

[path]?testParameter="test1"&testParameter="test2" 

,但我找不到一個相關的JAX-RS功能是這個bean進行編碼。

+0

你在哪裏要使用這個類呢? – 2014-03-13 14:51:15

+0

我使用這個類作爲某種狀態對象。傳入的請求被映射到這個類。然後發生一些轉換,並且應該將狀態對象附加到來自網頁的每個傳出鏈接。所以應用程序的狀態保存在下一頁。目前我使用org.jboss.resteasy.client.ClientRequest和org.jboss.resteasy.client.core.marshallers.FormMarshaller一起使用,但是這個方法已經被棄用了,我無法找到一個替代者 – c0l3

回答

0

如果您使用JAX-RS 2.0,則可以使用@BeanParam註釋。這裏是鏈接:https://jax-rs-spec.java.net/nonav/2.0-SNAPSHOT/apidocs/javax/ws/rs/BeanParam.html

你的方法是這樣的:

@Path("/restMethod") 
public Response restMethod (@BeanParam Parameters parameters) { 
    // ... 
} 
+0

我知道如何做傳入方。我正在尋找一個實用程序將這個類解組回URL參數。 – c0l3

+0

爲什麼不使用Reflection來解析所有使用@QueryParam註釋的屬性,然後根據它們構建URL。使用URLEncoder對查詢參數值進行編碼。 – Loc

+0

我以爲javax.ws.rs中可能有解決方案。但現在看來不然,我必須自己實施它。 – c0l3