Restygwt:格式错误的URI序列

时间:2014-09-15 16:12:44

标签: java encode resty-gwt

我在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,但它仍然不起作用=(

如何指定应解码登录参数? 感谢您的建议,如果有的话。

1 个答案:

答案 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