Rest 如果表单元素是动态创建的,如何使用@FormParam

Rest 如果表单元素是动态创建的,如何使用@FormParam,rest,jersey,Rest,Jersey,由于html表单元素是在此应用程序中动态创建的,因此元素的数量未知。如何使用@FormParam注释获取元素信息?例如,以下代码获取两个表单元素的信息: @POST @Path("/newpage") @Produces("text/html") public String func(@FormParam("element1") String firstElement, @FormParam("element2") S

由于html表单元素是在此应用程序中动态创建的,因此元素的数量未知。如何使用@FormParam注释获取元素信息?例如,以下代码获取两个表单元素的信息:

    @POST
    @Path("/newpage")
    @Produces("text/html")
    public String func(@FormParam("element1") String firstElement,
                       @FormParam("element2") String secondElement) throws IOException 
    {
         // your code goes here
    }

这是不可能的,因为我们不知道元素的数量。

我想不出使用
@FormParam
实现这一点的方法,但您可以使用访问
HttpServletRequest
(它引用了所有表单参数的映射):

//您可以使其成为资源类的成员,并在资源方法中进行访问
@上下文
私有HttpServletRequest;
@职位
@路径(“/newpage”)
@生成(“文本/html”)
公共字符串func()引发IOException
{
//检索所有表单参数的映射(无论有多少)
final Map params=request.getParameterMap();
//现在,您可以迭代密钥集并根据需要处理每个字段
for(字符串字段名:params.keySet())
{
String[]fieldValues=params.get(fieldName);
//你的密码在这里
}
}

正确答案实际上是使用多值dmap参数捕捉身体(使用Jersey测试):

@POST
@使用(MediaType.APPLICATION\u FORM\u URLENCODED)
@生成(MediaType.TEXT\u HTML)
公共字符串post(多值映射formParams)
{
…随意在formParams上迭代
// you can make this a member of the Resource class and access within the Resource methods
@Context
private HttpServletRequest request;

@POST
@Path("/newpage")
@Produces("text/html")
public String func() throws IOException 
{
    // retrieve the map of all form parameters (regardless of how many there are)
    final Map<String, String[]> params = request.getParameterMap();

    // now you can iterate over the key set and process each field as necessary
    for(String fieldName : params.keySet())
    {
        String[] fieldValues = params.get(fieldName);

        // your code goes here
    }
}
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_HTML)
public String post(MultivaluedMap<String, String> formParams)
{
 ... iterate over formParams at will