1

다른 주요 spark 메서드보다 먼저 mainfiles.location ("/ public")을 호출했습니다. 어떤 이유로 인해 정적 파일 디렉터리 아래의 디렉터리 중 하나만이 단축 경로. 내 템플릿 디렉토리의 파일 "public/templates"는 "/public/templates/foo.vtl"과 함께 호출해야하지만 CSS 디렉토리의 파일 인 "public/css"는 "/css/bar.css"와 함께 호출 할 수 있습니다.Spark-Java 정적 파일 위치 문제

내가 주목할 수있는 한 가지 사실은 CSS 파일의 약식 경로가 원래 내 .java 파일에 있었지만 이제는 내 템플릿 파일 중 하나에 있다는 점입니다. 그것은 여전히 ​​템플릿 파일에서 작동합니다. 내 템플릿 폴더가 내 공용 폴더에서 인식되지 않지만 내 css 폴더가 인식되지 않는 이유는 무엇입니까?

이 프로젝트에서는 IntelliJ 아이디어를 사용하고 있습니다.

내 코드는 Spark 웹 사이트의 레이아웃 자습서 코드와 거의 동일하지만 여기에 나와 있습니다. 몇 주 전에 Netbeans과 비슷한 문제가 발생했으며 IDE를 전환하면 문제가 해결 된 것으로 보입니다. 이것은 아마도 IDE가 일종의 리소스 파일을 업데이트하지 않는 문제입니까? 나는 곤두박질 친다! 그것은 큰 문제는 아니지만 오히려 그것이 무의식적으로되는 것보다 오히려 작동하지 않는 이유를 알고 싶습니다.

enter image description here

편집 : 요청에 따라, 다음이의 내용입니다 여기

public static void main(String[] args) { 
    staticFiles.location("/public"); 
    String layout = "public/templates/layout.vtl"; 
    //secure("public/keystore.jks", "password", null, null); 

    get("/", (req, res) -> { 
     HashMap model = new HashMap(); 
     model.put("template", "public/templates/main.vtl"); 
     return new ModelAndView(model, layout); 
    }, new VelocityTemplateEngine()); 

    get("/page2", (req, res) -> { 
     HashMap model = new HashMap(); 
     model.put("template", "public/templates/main2.vtl"); 
     return new ModelAndView(model, layout); 
    }, new VelocityTemplateEngine()); 

텍스트의 혼란 위의 많은 이해가되지 않았다 경우, 내 폴더 구조의 이미지입니다 내 목표 디렉토리.

+0

spark 2.3으로 다운 그레이드하고 다시 시도하십시오. 의견을 보내주십시오. –

+0

@Laercio 나는 2.3의 불꽃으로 다운 그레이드하고 2.3 문서에 따라 staticFiles.location() 줄을 staticFileLocation()으로 변경했지만 전체 경로 대신 단축 경로로 템플릿을로드하려고 할 때도 동일한 500 오류가 발생합니다. resources 폴더. – TheFunk

+0

TheFunk, 대상 디렉토리 아래에있는 것을 보여줄 수 있습니까? – Andrew

답변

1

enter image description here

당신은 "템플릿 /" 대신 "공공/템플릿 /"을 사용해야합니다.

때문에 당신이"공공/공공/템플릿"으로 해석 지정하고이 대상 디렉토리에 존재하지 않는 위치.

ModelAndView (model, templatePath)을 만들 때 레이아웃 변수 ("public/templates/layout.vtl")에서 잘못된 값을 지정했습니다. 각 템플릿의 경로를 설정해야합니다. 아래 예와 같습니다.

enter image description here

+0

사실 그건 제 생각과는 정반대입니다. 정적 파일 위치를 설정하려고 시도하지만 시스템이 유효한 경로로 템플릿을 인식하지 못합니다. 대신/public/templates를 올바른 경로로 인식합니다. 흥미롭게도 시스템은/css를 유효한 경로로 인식하며 해당 폴더와 템플릿 폴더는 모두 공용 폴더 아래에 있습니다. – TheFunk

+0

TheFunk, Eclipse IDE에서 프로젝트를 실행 해보시겠습니까? 그리고이 코드를 github에 보내면 IDEA에서 시도해 볼게요. – Andrew

+0

감사합니다. @ 앤드류 감사합니다. 나는 정말로 여기에서 곤란하다. 나는 최소한 두 가지 일을 먼저 시도하지 않았 냐고 물어 보지 않았을 것이다. 몇 주 전에 Netbeans에서 이와 똑같은 문제가 있었고 IDEA로 바뀌었고 문제가 해결되었습니다. 내 코드를 사용할 수 있습니다 [여기] (https://codeshare.io/ww2Yx) – TheFunk