2011-08-25 2 views
1

자바 스크립트에서 URL 해시 #을 얻으려면 다음과 같이하면됩니다.JSTL로 URL # hash 가져 오기

window.location.hash 

JSTL에서 이와 비슷한 간단하고 쉬운 방법이 있습니까?

내가 가지고있는 URL의 예 : http://hatsos.com/#somehashname

쉬운 방법이 내장되어 있지 않다면 어떻게 URL을 얻은 다음 해시를 파싱 할 것인가?

+0

[URL Fragment Identifier] (http://en.wikipedia.org/wiki/Fragment_identifier)가 클라이언트 측에서만 사용되지 않습니까? –

답변

2

서버 측에서 해시 단편 식별자를 얻는 유일한 방법은 클라이언트 쪽에서 요청 매개 변수로 변경된 값이있는 HTTP 요청을 보내도록하는 것입니다. 예를 들어, window.onhashchange 이벤트 동안 Ajax를 사용합니다. 질문의 역사에서 jQuery에 익숙하다는 것을 알 수 있습니다. 여기에 킥오프 예입니다

window.onhashchange = function() { 
    $.get('someservlet', { 'hash', window.location.hash }, function(response) { 
     // ... 
    }); 
} 

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String hash = request.getParameter("hash"); 
    // ... 
} 

으로 jQuery hashchange plugin을 고려, window.onhashchange에 대한 IE6/7 지원의 부족을 커버.

+1

나는 두려워했다. JSTL에서 필요로하는 이유는 세션에 해시 값을 추가 할 수 있기 때문입니다. $ {sessionScope.hash}. 그런 식으로 처음 해시 페이지를 방문한 후에는 다음에 어디에서든지 그 값을 유지할 수 있습니다. 내 클라이언트의 디자인, 해시되어야합니다 ... 매개 변수가 없습니다. Btw,로드 후이 해시가 변경되지 않습니다. 그것은 사용자가 직접 방문하는 URL입니다. 그래서 매개 변수가 같은 상황에 있기 때문에 서버에서 사용할 수있을 것이라고 생각했습니다. – UpHelix

1

당신은 URI Fragment id에 대해 이야기하고 있습니다. 대부분의 사용자 에이전트는 서버에 보내지도 않으므로 실제로는 얻을 수 없습니다. JavaScript는 클라이언트 측에서 실행되기 때문에 액세스 할 수 있습니다.