我有一個像功能:在Jersey中,我可以將QueryParams和FormParams組合成一個方法的值嗎?
@POST
@Path("/create")
@Produces({MediaType.APPLICATION_JSON})
public Playlist createPlaylist(@FormParam("name") String name)
{
Playlist p = playlistDao.create();
p.setName(name);
playlistDao.insert(p);
return p;
}
我想要的「名」參數來從形式或從查詢參數。如果用戶發佈到/ playlist/create /?name = bob,那麼我希望它能夠工作。 (這主要是爲了幫助測試API,但也用於在不同的非瀏覽器平臺上使用它。)
我願意將任何使魔術綁定工作的子類...(@BothParam(「name 「)字符串名稱),但需要一些幫助來實現這一點,因爲我是Jersey/Java Servlets的新手。
更新:第二天...
我已經通過實施合併的形式參數到查詢參數的ContainerRequestFilter解決了這個。這不是最好的解決方案,但它似乎工作。我沒有任何運氣將任何東西合併到表單參數中。
這裏的,以防有人代碼來尋找它:
@Override
public ContainerRequest filter(ContainerRequest request)
{
MultivaluedMap<String, String> qParams = request.getQueryParameters();
Form fParams = request.getFormParameters();
for(String key : fParams.keySet())
{
String value = fParams.get(key).get(0);
qParams.add(key, value);
}
}
我仍然欣賞知道是否有更好的方法來做到這一點,所以我會離開這個問題打開了。
我找不到Injectable和InjectableProvider類。他們是否在最近的澤西島體育場下臺?有沒有更換? – 2015-11-26 02:51:34
如果按照最近的澤西島庫你指的是2.x版本,那麼,是的,我相信有一個替代品 - http://stackoverflow.com/questions/18463311/jersey-2-how-to-replace-injectableprovider -and-abstracthttpcontextinjectable – maxenglander 2015-11-27 18:08:41