我有一个方法可以返回父记录的所有记录(例如文档和行):
public Datasource<Son> getSonsFromParent( @FormParam(value = "idparent") Long idparent,
MultivaluedMap<String, String> formParams) throws Exception;
我有一个众所周知的参数,“idparent”。我想简单地使用@FormParam
来获取此参数。将这种方法暴露给其他人是有用的:他们知道需要“idparent”。
另外,我有许多未定义的参数用于排序和过滤我的数据源,例如
sort[0]=name
sort[1]=surname
filter[0][field]=name
filter[0][operator]=equal
filter[0][value]=Marc
问题是:使用@FormParam
,多值地图始终为空。
如何将MultivaluedMap和@FormParam
混合在一起?
答案 0 :(得分:2)
您无法在同一资源方法中使用@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 的文档会公开所有参数,而不仅仅是所需的参数?