2017-04-11 64 views
1

下面是函数头QueryParam跳过一切符号标志后

@GET 
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) 
@Path("/getxyz") 
public Response getXyz(@QueryParam("input") String input){ 

SomeClass abc = someService.getValue(input); 

和输入值可以包含符号,以及。我面临的问题是当我使用@QueryParam时,它跳过&符号后面的所有值。

例如:如果从浏览器端再次输入test&test,则它被解释为只有test

此外,我使用encodeURIComponent(input)对客户端的输入进行编码。

有什么想法?

回答

2

查询参数被&符号seprated,那之后你的情况&跳过第二次测试的原因。如果你想要两个test,那么在URL中将它们发送为test and test

另请参阅What is the proper way to seperate query string parameters in a url?,如何发送查询参数。

+0

但是,如果我们将'&'更改为'和',这将改变输入查询本身。有没有更好的方法来解析查询参数? – ajup

+0

你真的需要把它作为'test&test'吗? –

+0

如果是的话,然后尝试发送它像key =“测试和测试”即封闭你的价值在双引号。 –

3

您应该在浏览器端编码符号符号,使用test%26test而不是test&test。如您所说,如果您使用encodeURIComponent,请在客户端编码后显示您的查询参数。它是test%26test

+0

是的,我确实认为它是测试%20%26%20test – ajup

1

最终我能够解决这个问题,使用Spring MVC框架,即使用@RequestParam解析输入请求。它准确地解码test%20%26%20testtest & test

如果您的项目与Jersey一起使用Spring MVC,此方法将非常有用。感谢大家提出宝贵的建议!