Java Restygwt:格式错误的URI序列

Java Restygwt:格式错误的URI序列,java,encode,resty-gwt,Java,Encode,Resty Gwt,我在resygwt上提供了基于REST的服务,API如下: @Path("/search") @GET List<User> search(@QueryParam("login") String loginMask) throws RemoteException; 这很奇怪,因为在JavaDoc中提到,默认情况下应该支持这样的请求: 将HTTP查询参数的值绑定到资源方法参数 资源类字段或资源类bean属性 值是URL解码的,除非使用{@link Encoded}禁用此功能 注释。

我在resygwt上提供了基于REST的服务,API如下:

@Path("/search")
@GET
List<User> search(@QueryParam("login") String loginMask) throws RemoteException;
这很奇怪,因为在JavaDoc中提到,默认情况下应该支持这样的请求:

  • 将HTTP查询参数的值绑定到资源方法参数
  • 资源类字段或资源类bean属性
  • 值是URL解码的,除非使用{@link Encoded}禁用此功能
  • 注释。可以使用{@link DefaultValue}指定默认值
  • 注释
我尝试使用useBodyEncodingForURI和URIEncoding=“UTF-8”在server.xml中编辑tomcat连接器。还包括org.springframework.web.filter.CharacterEncodingFilter和forceEncoding集,但它仍然不起作用=(

我应该做什么来指定应该解码登录参数?
感谢您提供的任何建议。

如果您想解码该值,您可以创建一个
ContainerResponseFilter
,在
ResourceConfig
中注册它,然后执行以下操作

String loginValue= queryParams.get("login");
loginValue= URLDecoder.decode(loginValue, "UTF-8");
默认情况下,RestyGWT可能正在对所有参数进行编码


需要在restyGWT google讨论中提问:

您的问题真的与restyGWT有关吗?据我所知,问题更多的是tomcat在解码查询参数值方面的问题。您希望resty不编码查询参数,还是希望后端解码查询参数?
String loginValue= queryParams.get("login");
loginValue= URLDecoder.decode(loginValue, "UTF-8");