我有一个方法可以返回父记录(例如文档和行)的所有记录子:
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的文档将公开所有参数,而不仅仅是必需的权利?