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

public Datasource<Son> getSonsFromParent( @FormParam(value = "idparent") Long idparent,
        MultivaluedMap<String, String> formParams) throws Exception;


我有一个众所周知的参数“ idparent”。我想简单地使用@FormParam来获取此参数。将这种方法暴露给其他人很有用:他们知道需要“同父异母”。

另外,例如,我有许多未定义的参数可以对数据源进行排序和过滤

 sort[0]=name

  sort[1]=surname

  filter[0][field]=name

  filter[0][operator]=equal

  filter[0][value]=Marc


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

如何将MultivaluedMap和@FormParam混合在一起?

最佳答案

您不能在同一资源方法中使用@Formparam, MultiValuedMap, @FormDataParam,@BeanParam。 JAX-RS不知道哪个对象是映射请求中信息的合适对象。

无论如何,我不明白为什么您不只是使用MultiValuedMap<String,String> 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
  }
}


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

09-10 22:56