Java Jersey:正在解码字符串@PathParam,其中包含空格

Java Jersey:正在解码字符串@PathParam,其中包含空格,java,jersey,Java,Jersey,问题: 我正在将customerName传递为:堆栈溢出(URL编码为:堆栈%20溢出)。我希望在java代码中接收解码字符串(堆栈溢出,不含%20) 我尝试的内容: 这样做很好,但我觉得这不是更通用的方法 public Response getCustomerByName( @PathParam("customerName") String customerName) 需要更通用的解决方案: 我还想在其余的API中做类似的更改,因此在每个API中使用URLDecover是一个负担。我是否可以

问题
我正在将customerName传递为:堆栈溢出(URL编码为:堆栈%20溢出)。我希望在java代码中接收解码字符串(堆栈溢出,不含%20)

我尝试的内容:
这样做很好,但我觉得这不是更通用的方法

public Response getCustomerByName(
@PathParam("customerName") String customerName)
需要更通用的解决方案: 我还想在其余的API中做类似的更改,因此在每个API中使用URLDecover是一个负担。我是否可以遵循任何常规做法在应用程序级别强制执行此解码?(@PathParam在我收到请求时已经被解码)

它将自动“解码”,您不需要使用
urldecker.decode进行显式解码(customerName,“UTF-8”)

如javadoc的javadoc中所述:

该值是URL解码的,除非使用编码注释禁用此功能

我刚刚在下面进行了验证,它按照javadoc(在weblogic服务器中)工作


如果您使用的是Tomcat,请尝试在server.xmlHi-Marco中设置URIEncoding=“UTF-8”,谢谢。让我试试这个解决方案。谢谢你的回复。这让我想到应用程序中的某个地方(过滤器/侦听器)的解码逻辑被覆盖了。
URLDecoder.decode(customerName, "UTF-8");
@GET
@Produces(value = { "text/plain"})
@Path("{customerName}")
public Response getCustomerByName(@PathParam("customerName") String customerName) {
    System.out.println(customerName);
    return Response.ok().entity(customerName).type("text/plain").build();
}