Java JAX-RS混合@FormParam和多值Map<;字符串,字符串>;formParams

Java JAX-RS混合@FormParam和多值Map<;字符串,字符串>;formParams,java,rest,annotations,jersey,jax-rs,Java,Rest,Annotations,Jersey,Jax Rs,我有一个方法可以返回父记录的所有记录(例如文档和行): 问题是:使用@FormParam,多值映射始终为空。 如何将多值dmap和@FormParam混合在一起?您不能在同一资源方法中使用@FormParam、多值dmap、@FormDataParam、@BeanParam。JAX-RS不知道映射请求中提交的信息的合适对象是哪个 在任何情况下,我都不明白为什么不直接使用多值map formParams和验证idParent 使用@Formparam不会使此类参数成为必需的,您可以通过您的代码实现

我有一个方法可以返回父记录的所有记录(例如文档和行):

问题是:使用
@FormParam
,多值映射始终为空。


如何将多值dmap和
@FormParam
混合在一起?

您不能在同一资源方法中使用
@FormParam、多值dmap、@FormDataParam、@BeanParam
。JAX-RS不知道映射请求中提交的信息的合适对象是哪个

在任何情况下,我都不明白为什么不直接使用
多值map formParams
验证
idParent

使用
@Formparam
不会使此类参数成为必需的,您可以通过您的代码实现来负责:

public Datasource<Son> getSonsFromParent( MultivaluedMap<String, String> formParams) {

  String idParent = formParams.getFirst("idparent");

  if(idParent == null || idParent.isEmpty()){
     // return .... [idParent is required] 400 Bad Request
  }
}
公共数据源getSonsFromParent(多值dmap formParams){
字符串idParent=formParams.getFirst(“idParent”);
if(idParent==null | | idParent.isEmpty()){
//return….[idParent是必需的]400错误请求
}
}

如果您打算向您的客户公开此类参数,这也意味着您的API文档将公开所有参数,而不仅仅是必需的参数,对吗?

请看这里。这是一个能满足你需要的答案。我想使用@FormParam,因为如果我的参数是整数,它会将字符串转换为Long。之后,我将检查(param==null)是否抛出异常。FormParam只是一种更简单的方法,但如果我不能使用它,我就不能:)谢谢
 sort[0]=name

  sort[1]=surname

  filter[0][field]=name

  filter[0][operator]=equal

  filter[0][value]=Marc
public Datasource<Son> getSonsFromParent( MultivaluedMap<String, String> formParams) {

  String idParent = formParams.getFirst("idparent");

  if(idParent == null || idParent.isEmpty()){
     // return .... [idParent is required] 400 Bad Request
  }
}