2017-03-03 2 views
1

저는 봄 부팅시 thymeleaf를 사용하고 있으며 몇 가지보기가 있습니다. 기본적으로 src/main/resources/templates 같은 폴더에 모든 뷰를 유지하고 싶지는 않습니다.보기에서 thymeleaf spring 부트 템플릿 하위 폴더

src/main/resources/templates/folder1에서 일부보기를 이동할 수 있습니까? 해당 페이지에 액세스하려면 "folder1/viewname"을 전달하겠습니다.

내가 http://localhost:8080/folder1/layout1을 시도했을 때 src/main/resources/templates/folder1 /에서 HTML을 찾지 못했지만 템플릿 메인 폴더 src/main/resources/templates /에서 html을 움직이면 http://localhost:8080/layout1이 정상적으로 작동했습니다.

@RequestMapping(value = "{pagename}", method = RequestMethod.GET) 
public String mf42_layout1(@PathVariable String pagename) { 
    return pagename; 
} 

그래서, 내가 배치 1을 전달하면,이 템플릿하는 int 볼 것이다, 나는 "A/배치 1"을 말한다면, 그것은/레이아웃 폴더의 모양 생각 : 같은

내 컨트롤러 클래스 보인다

덕분에, 마니

+0

시도해 보셨습니까? –

+0

예, 작동하지 않았습니다. 나는 지금 질문에 그것을 추가했다. – krmanish007

+0

짧은 대답은 : 네, 할 수 있습니다.하지만 스프링 부트 응용 프로그램 설정에 따라 달라질 수 있습니다. 나는 spring-mvc에서 이와 같이 구성되어있다. spring-boot app에서 view resolver를 설정하는 것이 필요하다. 귀하의 질문에 더 많은 세부 사항을 추가하는 것은 확실히 도움이 될 것입니다. – iaforek

답변

1

기본적으로, 귀하의 요청 매핑 및보기의 이름이 분리되어, 당신은 단지 구문에주의를 기울여야 할 필요가있다. http://localhost:8080/layout1

@RequestMapping(value = "/foobar", method = RequestMethod.GET) 
public String mf42_layout1() { 
    return "layout1"; 
} 

요청에 예를 들어

src/main/resources/templates/pagename.html에있는 템플릿을 렌더링합니다. 그것은 또한 당신만큼 당신이보기에 올바른 경로를 제공하기 때문에, 하위 폴더에 템플릿을 넣으면 작동

:

@RequestMapping(value = "/foobar", method = RequestMethod.GET) 
public String mf42_layout1() { 
    return "a/layout1"; 
} 

src/main/resources/templates/a/layout1.html에있는 템플릿을 렌더링 http://localhost:8080/foobar에 대한 요청.

할 수도 @PathVariable과 URL 엔드 포인트 파라미터 :

@RequestMapping(value = "/foobar/{layout}", method = RequestMethod.GET) 
    public String mf42_layout1(@PathVariable(value = "layout") String layout) { // I prefer binding to the variable name explicitely 
     return "a/" + layout; 
    } 

지금 http://localhost:8080/foobar/layout1에 대한 요청이 src/main/resources/templates/a/layout2.html

에 무엇이 렌더링 src/main/resources/templates/a/layout1.html의 템플릿과 http://localhost:8080/foobar/layout2에 요청을 렌더링하지만 조심됩니다 슬래시는 URL의 구분 기호 역할을하므로 컨트롤러에서 :

@RequestMapping(value = "{pagename}", method = RequestMethod.GET) 
public String mf42_layout1(@PathVariable String pagename) { 
    return pagename; 
} 

내 생각 엔 http://localhost:8080/a/layout1 페이지 이름이 "a"를 받고 "layout1"이 (가) 잡히지 않는다고 생각합니다. 따라서 컨트롤러는 아마도 내용을 렌더링하려고합니다. src/main/resources/templates/a.html

Spring MVC reference은 요청을 매핑하는 방법을 광범위하게 설명하므로주의 깊게 읽어야합니다.