2011-07-04 2 views
2

바람둥이 6.0 및 풍성한 4.0.0 JSF 2.0이있는 웹 응용 프로그램이 있습니다.2.0에서 JSF 탐색 처리기로 URL 액세스를 숨기는 방법

내 모든 페이지의 내선은 xhtml입니다.

내 모든 내비게이션 faces-config.xml의 내비게이션은 .xhtml입니다.

현재 브라우저는 FacesServlet으로 이동하는 파일의 .xhtml 확장자로 전체 URL을 표시합니다.

모든 탐색에 대해 localhost:8080/appname과 같은 기본 URL 만 표시하고 싶습니다.

이것이 가능합니까?

답변

0

당신은 당신이 URL 패턴에 FacesServlet 자체를 매핑 등의 경우 등 /static, /resources, /assets, 같이 고정 된 일반적인 폴더에 등등 이미지, 스타일 시트, 자바 스크립트로 모든 정적 콘텐츠를 넣어 경우 네, 가능 *.xhtml입니다.

그럼 당신은 /*의 URL 패턴에 매핑하고 투명하게 모든 정적 콘텐츠에 대한 요청/응답 체인을 계속하고 FacesServlet에 나머지를 전달하는 Filter을 만들 수 있습니다.

String uri = ((HttpServletRequest) request).getRequestURI(); 

if (uri.startsWith("/static/")) { 
    chain.doFilter(request, response); // Goes to default servlet. 
} else { 
    request.getRequestDispatcher(uri + ".xhtml").forward(request, response); // Goes to faces servlet. 
} 

네비게이션 처리기는 faces 서블릿이 실행 된 경우에만 사용할 수있는 faces 컨텍스트에서 실행되어야하므로 불가능합니다.

관련 문제