这可能有点愚蠢的问题,但如果可以在RESTful webservice下的POST方法中接收@FormParam中的JSON对象,我会感到困惑
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/fetch/")
public List<MyObject> getCandidate(@FormParam("CodeList")
List<String> codeList)
{
List<MyObject> myobjects = null;
try {
//some code
} catch (Exception e) {
//some exception if occur
}
return myobjects;
}
如果我想在表单param中获取userdefine对象,该怎么办?
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/fetch/")
public List<MyObject> getCandidate(@FormParam("CodeList")
List<MyObject> formMyObjectList)
{
List<MyObject> myobjects = null;
try {
//some code
} catch (Exception e) {
//some exception if occur
}
return myobjects;
}
提前致谢。
答案 0 :(得分:3)
这是可能的,但你需要了解什么是@FormParam,基本上它从特定的html表单接收值,因为你可能知道@FormParam需要知道你想要使用@FormParam从请求中获取的参数是什么(“myParam”),如果你想消耗json,你需要提供它。所以答案是你不需要使用@FormParam来使用JSON
上面的意思是代替发送你需要发送完整json的一对键/值属性,显然你需要使用jquery甚至javascript生成json然后将它发送到你的端点应该是类似的东西。
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/fetch/")
public List<MyObject> getCandidate(MyBean mybean){}
MyBean类需要具有将在JSON中发送的字段。这里的神奇之处在于MessageBodyReader
,你应该在类路径中有杰克逊,你可以找到一个例子here。如果您阅读this也是个好主意。