我在resygwt上使用基于REST的服务,使用这样的API:
@Path("/search")
@GET
List<User> search(@QueryParam("login") String loginMask) throws RemoteException;
我收到此请求的“格式错误的URI序列”:
http://devsys23:8080/rest/search?login=%25spa%20ce%25
这很奇怪,因为在JavaDoc中提到,默认情况下应该支持这样的请求:
- 将HTTP查询参数的值绑定到资源方法参数
- 资源类字段或资源类bean属性。
- 除非使用{@link Encoded}
禁用此值,否则将对URL进行解码- 注释。可以使用{@link DefaultValue}
指定默认值- 注释。
我尝试使用useBodyEncodingForURI和URIEncoding =“UTF-8”编辑server.xml中的tomcat连接器。还包括了org.springframework.web.filter.CharacterEncodingFilter并设置了forceEncoding,但它仍然不起作用=(
如何指定应解码登录参数? 感谢您的建议,如果有的话。
答案 0 :(得分:0)
如果您要解码该值,可以创建一个ContainerResponseFilter
,在ResourceConfig
中注册并执行类似
String loginValue= queryParams.get("login");
loginValue= URLDecoder.decode(loginValue, "UTF-8");
默认情况下,RestyGWT可能会对所有参数进行编码。
需要询问restyGWT google讨论:https://groups.google.com/forum/#!forum/restygwt