2017-04-11 4 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

쿼리 params를 & 기호로 seprated있다, 그것은 귀하의 경우 & 후 두 번째 테스트를 건너 뛸 이유를 이잖아. test을 모두 원하면 URL에 test and test으로 보내십시오.

What is the proper way to seperate query string parameters in a url?, 검색어 매개 변수를 보내는 방법을 읽어보십시오.

+0

그러나 '&'를 'and'로 변경하면 입력 쿼리 자체가 변경됩니다. 쿼리 매개 변수를 구문 분석하는 더 좋은 방법이 있습니까? – ajup

+0

'test & test'로 전달해야합니까? –

+0

인 경우 key = "test & test"와 같이 보내십시오. 즉, 값을 큰 따옴표로 묶으십시오. –

3

브라우저 측에서 앰퍼샌드 기호를 인코딩하려면 test&test 대신 test%26test을 사용해야합니다. 앞에서 말한대로 encodeURIComponent을 사용하는 경우 클라이언트 측에서 해당 인코딩 후에 쿼리 매개 변수를 표시하십시오. 그 결과는 test%26test

+0

예, 시험으로 보았습니다. % 20 % 26 % 20test – ajup

1

결국 Spring MVC 프레임 워크, 즉 @RequestParam을 사용하여 입력 요청을 구문 분석하여이 문제를 해결할 수있었습니다. 정확히 test%20%26%20test에서 test & test까지 디코딩합니다.

이 방법은 프로젝트가 Jersey와 함께 Spring MVC를 사용하는 경우 유용합니다. 여러분의 소중한 제안에 감사드립니다!