gpt4 book ai didi

java jersey 2如何使用post处理常规html表单数组?

转载 作者:行者123 更新时间:2023-12-01 11:10:58 24 4
gpt4 key购买 nike

我有一个 Jersey 端点

@Path(value = "/testfields")
@POST
@Consumes({"application/x-www-form-urlencoded"})
public Response acceptFields(@BeanParam MyWrapper initialWrapper,String entity) {
//.......

}

MyWrapper 是:

class MyWrapper{
@FormParam("param1")
private String param1;
@FormParam("inners")
private List<MyInnerWrapper> inners;

//..getters setters
}

class MyInnerWrapper{
@FormParam("innerParam1")
private String innerParam1;

//.... getters setters


}

我有请求 POST 实体字符串:

param1=aaa&inners[0]["innerParam"]=bbb&inners[1]["innerParam"]=nnn

问题是我可以使用@BeanParam注释获取父级的字段param1,但无法获取自定义类的内部列表,为什么?如何处理常规的html表单数组?我需要在我的端点中使用其内部类来评估我的类。我尝试了数组、对象列表,但没有任何效果。谢谢

最佳答案

据我所知,Jersey 不支持这种类型的语法。如果您想对 @FormParam 使用自定义类型,那么您需要满足至少 Javadoc 中列出的要求之一。 。一种选择是只使用带有字符串参数的构造函数。例如

public class MyInnerWrapper {

private final String innerParam;

public MyInnerWrapper(String param) {
this.innerParam = param;
}

public String getInnerParam() {
return innerParam;
}
}

那么您所需要做的就是发送此请求

param1=blahparam&inners=first&inners=second&inners=third

然后你就可以拥有

@FormParam("inners")
private List<MyInnerWrapper> inners;

不需要 [] 来指定索引。允许重复。这就是为什么我们可以拥有 @FormParam 类型的列表和数组。

现在,如果您想要拥有多个属性,然后尝试像现在一样映射它们,我认为这行不通。至少在 Jersey 不是这样。如果您需要更复杂的类型,我建议您考虑使用 JSON。否则就坚持使用简单的按键。

关于java jersey 2如何使用post处理常规html表单数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32378581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com