2014-07-08 3 views
1

여기 내 이야기가 있습니다.개발 및 제작을위한 다른 URL입니다. (정적 내용 다시로드)

저는 스프링 웹 애플리케이션을 개발 중입니다. 정적 콘텐츠 (JS, CSS, JSP)의 재로드가 깨진 다음과 같은 스레드에서 해결책을 발견 :

Getting resources in VFrabric Server to deploy without causing container to reload

위해 내가 루트 URL '/'가 없습니다 일을 다시로드. 그래서 나는 그것을 '/ project'로 바꾸고 리로딩 작업을합니다. 큰!

하지만 다음 문제가 있습니다. 예를 들어 '/ typeahead/searchUniversities/% QUERY'에 대한 아약스 요청이 많으면 'project/typeahead/searchUniversities/% QUERY'로 변경해야합니다. 내가 프로덕션 서버에 업로드 할 때 '/ 프로젝트는'개발을 위해 단지이기 때문에 그리고 다시 '/ 선행 입력/searchUniversities/%의 QUERY'

로 변경해야

가 그래서 나는 프로파일에 대해 읽을 수는 있지만 이것이 이것이가는 길인지 확실하지 않습니다. 나는 그것을 과장 할지도 모른다?

나는 '$ {baseurl}/typeahead/searchUniversities/% QUERY'와 (과) 비슷한 것을 생각하고 제작하기 전에 한 곳에서 변경하려고합니다. 그러나 이것을하는 방법을 모릅니다.

누군가가이 작업을 수행하는 방법에 대한 예를 제시하면 도움이 될 것입니다.

감사합니다.

+0

빌드 도구로 Maven을 사용하고 있습니까? –

+0

예 Maven을 사용 중입니다. – nilsi

+0

Maven에는 필터링 옵션이 있습니다. js 코드 $ {holder}에 자리 표시자를 추가 할 수 있습니다. maven 필터링을 설정하면 빌드 중 maven이 자리 표시자를 maven 속성 값으로 바꿉니다. 그런 다음 로컬 및 프로덕션에 대해 서로 다른 프로파일을 실행하여 이러한 값을 동적으로 변경할 수 있습니다. 필터링 개념은 다음에서 설명합니다. http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html –

답변

2

편집 : JSP로 컨텍스트 경로를 얻을 수있는 또 다른 더 직접적인 방법을 추가

는 URL은 웹 애플리케이션에서 정적 않을 것

는 : 컨텍스트 경로가 결정된다 컴파일 타임이 아니라 배포시. 스프링 태그 라이브러리를 사용하는 경우 <spring:url> 태그를 사용할 수 있습니다 (JSTL <c:url> 태그가 아닌 경우). 둘 다 자동으로 컨텍스트 경로를 추가합니다.

BTW : JSP에서 <%= application.getContextPath() %>은 추가 taglib없이 컨텍스트 경로를 제공합니다.

그러나 "최상위 수준"URL에는 절대로 의미가있는 절대로 상대 경로 만 사용하십시오.

+0

이것이 내 문제의 해결책이라고 생각합니다. 내 별도의 JS 파일에서이 태그에 도달하는 방법을 모르겠습니다. 내 아약스 호출 URL을 수정하려면. – nilsi

+0

@nilsi JavaScript가별로 좋지 않습니다. 그러나 IMHO에는/js 아래 정적이지 않고 JSP에 의해 동적으로 생성되는 적어도 하나의 JS가 있어야합니다. 간단히 유형을 'text/javascript'로 설정하는 것을 잊지 마십시오.이 것은 실제 컨텍스트를 포함합니다 path를 사용하면 다른 JS 파일에서 사용할 변수를 정의하거나 모든 ajax 호출에서 직접 사용할 변수를 정의합니다. –

+0

HTML 파일의 인라인 스크립트에 변수를 설정하고 AJAX 스크립트에서 변수를 참조 할 수 있습니다. – chrylis

0

응용 프로그램은 배포 된 컨텍스트 경로에 의존해서는 안됩니다. 이 특정 문제에 대한 한 가지 해결책은 아약스 요청에서 상대 경로를 사용하는 것입니다.

예 :

'typeahead/searchUniversities/%QUERY'보다는 '/typeahead/searchUniversities/%QUERY'

+0

상대 쿼리를 사용할 때는 현재 URL의 깊이 수준을 확인해야합니다. IMHO 모든 URL이 1 단계 인 사소한 응용 프로그램에서만 안전합니다. –

+0

이것이 제가이 방법을 사용하지 않는 이유입니다. 이후 나는 다른 깊이에 같은 링크가 있습니다. – nilsi