2013-08-10 2 views
3

경우 요청 매개 변수 값을 얻을 나는 다음과 같은 요청 URL을 가질 수 있습니다어떻게 값이 해시 기호 (#)

localhost:8080/MyApp/browse/alphabetical/result?startsWith=#&page=1&size=10&sort=title&order=asc 

공지 사항 요청 매개 변수 "startsWith=#"을.

요청 매개 변수의 값으로 "#"을 가져올 수 없습니다. 대신, 나는 빈 문자열 ("")을 요청 매개 변수의 값으로받습니다. 요청 매개 변수의 값으로 "#"을 얻을 수있는 방법이 있습니까?

이 작동하지 않습니다 : ${param.startsWith eq '#'}

이 작품 : ${param.startsWith eq ''}

이 문제를 해결할 수있는 방법이없는 경우에, 나는 정말 원하지 않는 대신 startsWith=#startsWith=0 ... startsWith=9를 사용에 의존해야합니다

+0

'#'매개 변수의 값으로 URL에 표시 할 수 없습니다 예를 들어, JSP 페이지에서는 <c:url> JSTL 태그를 사용할 수 있습니다. '# '가 포함 된 매개 변수가 필요하면 인코딩해야합니다 (인코딩 된 값 : % 23). –

답변

6

그런 검색어 문자열을 사용하여 #을 보낼 수 없습니다. 그것은 쿼리 문자열의 일부가되지 않습니다.

RFC - Section 3.4 인용 :

쿼리 구성 요소는 숫자 기호 ("#") 문자 하거나 URI의 말에 첫 번째 질문 마크 ("?") 문자로 표시하고 종료

.

요청을 보내기 전에 매개 변수를 쿼리 문자열로 인코딩해야합니다. 이 URL 구문에서 특별한 의미 (가 앵커를 정의)을 가지고 있기 때문에

<c:url value="/MyApp/browse/alphabetical/result" var="url"> 
    <c:param name="startsWith" value="#" /> 
    <!-- Rest of the parameters --> 
</c:url> 
+0

각 매개 변수 값을 별도로 인코딩하려면 URLEncoder를 사용해야합니다. 전체 쿼리 문자열이 아닙니다. JSP에서 '자동으로 수행됩니다. –

+0

@JBNizet. 당신 말이 맞아요. 수정 된 답변 감사 :) –

관련 문제