2017-09-11 7 views
0

현재 EE6/JSF 응용 프로그램을 배포 경로 someserver.com/app에서 자신의 하위 도메인 app.someserver.com으로 옮깁니다.컨텍스트 루트가 음, 루트 : "/"이면 # {request.contextPath}를 어떻게 사용합니까?

대부분의 작업은 순조롭게 진행되지만 웹 레이어가 현재 기본적으로 존재하지 않는 컨텍스트 루트를 처리하는 방법에 예기치 않은 문제가 발생했습니다.

초기에 발견 한 한 가지 점은 경로가 "/app"에서 ""으로 단축되어 전체 응용 프로그램이 아닌 서버의 폴더에서만 읽을 수 있다는 것입니다.

우리는 지금 우리가 JSF에서 생성 하이퍼 링크와 비슷한 문제를 발견 :

<a href="#{request.contextPath}">Go to home page</a> 

이 이전에 href="/app"로 렌더링하지 않고 잘 작동,하지만 지금 href=""와 링크가 더 이상 당연 활성화되었다. 나는 그것이 href=""/"라고 말하고 싶다.

우아한 해결책이 있습니까?

그렇게 간단 "/"와 빈 컨텍스트 경로를 대체, 우리는 또한 형태

<a href="#{request.contextPath}/projects">Go to projects page</a> 

의 링크가 점을 명심하는 것은 충분하지 않습니다.

나는 분명한 뭔가를 놓치고 있습니까? 나는 here (우리가 경험 한 것과 일치하는) 설명을 보았지만, 가능한 해결책에 대해서는 설명하지 못했습니다.

답변

0

나는 분명히 생각하고 있지 않았다. 나는 #{request.contextPath}가 생성하는 끈을 고치기에 아주 집중했다, 나가 그것을 기본적으로 틀린 전체 시간 사용한 ㄴ다는 것을 놓쳤다.

가장 간단한 해결 방법은 응용 프로그램의 루트에 도착

<a href="#{request.contextPath}/">...</a> 

(후행 슬래시)를 사용하고, 모든 슬래시없이 href="#{request.contextPath}"를 사용하지 않을 것입니다.

두 가지 경우를 모두 해결합니다. 응용 프로그램이 "some_folder"에 배포 된 경우 링크는 "some_folder/"이됩니다. 응용 프로그램이 서버 루트에 배포 된 경우 링크는 "/"이됩니다.

희망 사항은 동일한 함정에 빠진 사람에게 도움이되기를 바랍니다.