2012-03-15 6 views
2

Google App Engine에서 StringTemplate을 사용하여 파일에서 템플릿을로드하려고하지만 템플릿 파일을 어디에 둘 것인지 파악할 수 없습니다.Google App Engine에서 StringTemplate 파일을 사용하려면 어떻게해야합니까?

설명서에는 StringTemplate이 "CLASSPATH의 템플릿을 리소스로 찾습니다"라고 나와 있지만 GAE 배포 측면에서 이것이 무엇을 의미하는지 확신 할 수 없습니다.

예를 들어, 나는 "템플릿"이라는 디렉토리에 내 템플릿을 넣어 가정 내 서블릿과 같은 코드를 넣어 :

StringTemplateGroup group = new StringTemplateGroup("mygroup", "templates"); 
StringTemplate st = group.getInstanceOf("homepage"); 

을 그리고 나는 "템플릿"디렉토리를 배치해야합니까 어디?

+0

이 예제는 "템플릿"을 템플릿 디렉터리의 절대 경로로 바꿀 경우 디버그 모드로 로컬로 실행할 때 작동합니다. 물론 Google App Engine에 배포되는 경우 작동하지 않습니다. –

답변

3

"templates"디렉토리를 "war"디렉토리에 넣는 것으로 밝혀졌습니다.

로컬로 작동하고 GAE에 배포됩니다 (어쨌든).

+0

당신은 그 때 당신의 자신의 응답을 받아 들일 수 있 었는가? 같은 문제를 겪은 다른 사용자에게 유용 할 것입니다. –

+1

GAE에 관한 한 "정적"파일을 만들 필요가 없다고 생각합니다. 오히려 "리소스 파일"을 유지하고 앱과 동일한 서버에 배포해야하는 것처럼 보입니다. 문서에 따르면, 이것은 war 디렉토리의 기본 동작입니다. https://developers.google.com/appengine/docs/java/config/appconfig?csw=1#Java_appengine_web_xml_Static_files_and_resource_files –

+0

JR Lawhome - 저는 당신이 믿습니다. 올바른 (나는 '자극적 인'자극을 전혀 사용하지 않고있다.) 그래서 나는 그에 맞게 대답을 수정했다. 감사. –

1

"war/WEB-INF/lib"는 분명히 classpath에 있습니다. 템플릿이있는 것이 얼마나 적절한 지 잘 모릅니다.

this SO question도 참조하십시오.

+0

감사합니다. 그러나 "war/WEB-INF/lib"에 넣는 것은 효과가 없습니다. 나는 당신이 첫 번째 대답은 HTTP (못생긴, 왜 그것이 작동하는지) 템플릿을 노출하고 그 두 번째 템플릿 템플릿 파일을 문자열로 자신을로드하고 다음 StringTemplate에 전달하는 것이 좋습니다 링크. 지금은 후자의 접근 방식을 사용하겠습니다.하지만 해결 된 문제는 고려하지 않았습니다. –

0

war/WEB-INF/classes 디렉토리의 루트 디렉토리에 넣으면 클래스 경로에 표시됩니다. 빌드를 위해 maven을 사용한다면, src/main/resources에 그것들을 넣을 수 있고 루트에있는 classpath에 복사 될 것입니다.

+0

고마워,하지만 이클립스에서 그런 디렉토리가 분명하지 않지만, 이미 존재하기 때문에 (Eclipse에서는) 새로운 디렉토리를 만들 수 없다. 내 특정 응용 프로그램에서 생성되지 않은 빌드 출력을 위해 예약 된 것으로 판단됩니다. 나는 "클래스"라는 새로운 디렉토리를 만들고 빌드 경로에 추가했지만 그 중 하나를 작동하지 않았다. –

+0

아니요, 작동하지 않습니다. 그냥 자바 소스 디렉토리의 루트에 넣어 그들은 올바른 위치에 복사해야합니다. src/com/foo/bar와 같은 것을 src에 넣으면됩니다. –