我正在使用Jersey for Rest并且有一个接受@QueryParam.
但是,用户可以像这样发送@QueryParam.
:
contractName#
其中#
是0-155之间的数字。
如何在QueryParam中定义它(如正则表达式)?
答案 0 :(得分:3)
您无法指定正则表达式。但是,您可以定义自定义Java类型来表示该查询参数,并实现从String到该类型的转换 - 请参阅http://jersey.java.net/nonav/documentation/latest/jax-rs.html#d4e255(示例2.15)。
答案 1 :(得分:3)
我认为你不能用QueryParam做到这一点,但你可以直接得到参数列表:
@GET
public String get(@Context UriInfo ui) {
MultivaluedMap<String, String> queryParams = ui.getQueryParameters();
}
并迭代查找与正则表达式匹配的键。
答案 2 :(得分:0)
@GET
public String get (@QueryParam(value="param") String param){
boolean test =testYourParamWithNativeRegexpTools(param);
if( test==false)return 400;
else //work
.....
}