2011-09-08 4 views
3

JSF 1.2-1.2_07-B03-FCS페이지를

JSTL 1_1-MR2 (특수 빌드)

자바 1.6.0_22-B04

이클립스 3.6.0을 (호출 얻기 위해 순수 JSF를 사용하여 헬리오스)

톰캣 6.0.28()는 웹 로직에도 7.0.5730.13

IE를 실행해야파이어 폭스 6.0

우리가 페이지 : 에 http : // : 그것은 하이퍼 링크를 통해 여러 외부 페이지에서 호출

{호스트 포트} /mybase/faces/mypage.jsp ..., 리디렉션 등

순수한 "JSF"방식으로 명령 단추 "뒤로"단추를 구현하기 위해이를 호출 한 페이지의 URL을 확인하고 싶습니다.

우리는 우리가이 작업을 수행 할 수 있습니다 알고

FacesContext facesContext = FacesContext.getCurrentInstance(); 
    ExternalContext externalContext = facesContext.getExternalContext();   
    HttpServletRequest origRequest = 
     (HttpServletRequest)externalContext.getRequest(); 
    String referrer = origRequest.getHeader("referer"); 

이것은, 그러나, 서블릿 - api.jar을 파일을 포함하여 필요로하는 HttpServletRequest의 어떤 필요합니다.

질문 :이 작업은 순수 JSF 방식으로 수행 할 수 있으며 servlet-api.jar 파일을 포함하지 않고 수행 할 수 있습니까?

감사합니다, 존

답변

5

그러나 이것은 서블릿 - api.jar을 파일

이것은 말도 안돼 포함 요구하는 HttpServletRequest의 필요합니다. JSF 자체는 이미 서블릿 API 의존성을 가지고있다. 프로젝트가 대상 런타임과 전혀 관련이 없으므로 IDE의 컴파일 오류를 언급 한 것일 수 있습니다. 이 경우 신중하게 읽으십시오. How do I import the javax.servlet API in my Eclipse project?

구체적인 질문에 대해서는 ExternalContext#getRequestHeaderMap()을 사용하여 요청 헤더의 매핑을 가져옵니다.

String referrer = externalContext.getRequestHeaderMap().get("referer"); 
// ... 
+0

예, 작동합니다. 잘못된 경로가 많았지 만 getRequestHeaderMap()을 놓쳤습니다. 고맙습니다. John –

+0

당신을 진심으로 환영합니다. API 문서를 북마크하십시오. 그들은 매우 편리합니다. – BalusC

+0

아야! - 요점을 알았어. 사실, API를 사용하는 데 더 많은 시간을 할애했습니다. 잘못된 것만 찾고있었습니다. 많은 인터넷 검색,하지만 아무것도 귀하의 솔루션만큼 깨끗한 발견했다. John –

관련 문제