2014-11-22 10 views
0

주제와 마찬가지로 봄에 Thymeleaf 레이아웃 방언을 사용할 수 있습니까? 스프링 표준 방언을 사용해야합니까?springdymeleaf를 layoutdialect와 함께 사용할 수 있습니까?

웹상에는 많은 자료가있어 정말 혼란 스럽습니다.

레이아웃 방언으로 시작했지만 전체 앱을 사용할 수 없습니다.

<!DOCTYPE html> 
<html xmlns="http://www.w3c.org/1999/xhtml" xml:lang="pl" lang="pl" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> 
    <head> 
     <title>DERP></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <link rel="stylesheet" type="text/css" media="all" href="../../css/template.css" th:href="@{/css/template.css}" /> 
     <link rel="stylesheet" type="text/css" media="all" href="../../lib/font-awesome-4.2.0/css/font-awesome.min.css" th:href="@{/lib/font-awesome-4.2.0/css/font-awesome.min.css}" /> 
     <link rel="stylesheet" type="text/css" media="all" href="../../lib/bootstrap-3.3.1-dist/css/themes/slate/bootstrap.min.css" th:href="@{/lib/bootstrap-3.3.1-dist/css/themes/slate/bootstrap.min.css}" /> 
     <link rel="stylesheet" type="text/css" media="all" href="../../lib/animate/animate.css" th:href="@{/lib/animate/animate.css}" /> 
    </head> 
    <body> 
     <div th:include="fragments/bodyHeader" th:remove="tag"> 
      for prototyping 
     </div> 

     <div id="mainMenu"> 
       <div class="navbar navbar-default"> 
       <div class="navbar-header"> 
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse"> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        </button> 
        <a class="navbar-brand" href="#">DERP</a> 
       </div> 
       <div class="navbar-collapse collapse navbar-responsive-collapse"> 
        <ul class="nav navbar-nav"> 
        <li class="active"><a href="#">Active</a></li> 
        <li><a href="#">Link</a></li> 
        <li class="dropdown"> 
         <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> 
         <ul class="dropdown-menu"> 
         <li><a href="#">Action</a></li> 
         <li><a href="#">Another action</a></li> 
         <li><a href="#">Something else here</a></li> 
         <li class="divider"></li> 
         <li class="dropdown-header">Dropdown header</li> 
         <li><a href="#">Separated link</a></li> 
         <li><a href="#">One more separated link</a></li> 
         </ul> 
        </li> 
        </ul> 

        <ul class="nav navbar-nav navbar-right"> 
        <li class="dropdown"> 
         <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-home"></i> Customer <b class="caret"></b></a> 
         <ul class="dropdown-menu"> 
         <li><a href="#">Action</a></li> 
         <li><a href="#">Another action</a></li> 
         <li><a href="#">Something else here</a></li> 
         <li class="divider"></li> 
         <li><a href="#">Separated link</a></li> 
         </ul> 
        </li> 
        <li class="dropdown"> 
         <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> User <b class="caret"></b></a> 
         <ul class="dropdown-menu"> 
         <li><a href="#">Action</a></li> 
         <li><a href="#">Another action</a></li> 
         <li><a href="#">Something else here</a></li> 
         <li class="divider"></li> 
         <li><a href="#">Separated link</a></li> 
         </ul> 
        </li> 
        </ul> 
       </div> 
       </div> 
     </div> 
     <!-- #mainMenu ENDS--> 
     <div layout:fragment="header">Static header</div> 
     <div layout:fragment="pageContent">Demo static page content</div> 
     <div id="pageFooter" class="panel panel-default"> 
      <div class="panel-body">Copyright Daniel Korbel 2014</div> 
     </div> 
     <div id="javaScriptSection"> 
      <script type="text/javascript" src="../../lib/jquery/jquery-2.1.1.min.js" th:src="@{lib/jquery/jquery-2.1.1.min.js}"></script> 
      <script type="text/javascript" src="../../js/template.js" th:src="@{/js/template.js}"></script> 
      <script type="text/javascript" src="../../lib/noty-2.3.1/js/noty/packaged/jquery.noty.packaged.min.js" th:src="@{/lib/noty-2.3.1/js/noty/packaged/jquery.noty.packaged.min.js}"></script> 
      <script type="text/javascript" src="../../lib/noty-2.3.1/js/noty/layouts/topRight.js" th:src="@{/lib/noty-2.3.1/js/noty/layouts/topRight.js}"></script> 
      <script type="text/javascript" src="../../js/notyStarter.js" th:src="@{/js/notyStarter.js}"></script> 
      <script type="text/javascript" src="../../lib/bootstrap-3.3.1-dist/js/bootstrap.min.js" th:src="@{/lib/bootstrap-3.3.1-dist/js/bootstrap.min.js}"></script> 
     </div> 
    </body> 
</html> 

컨트롤러에 의해 반환되는 내 샘플 본문 파일 :

여기에 내 템플릿의 주요 파일입니다

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="layout/template"> 
    <div layout:fragment="pageContent"> 
     <p>LIST</p> 
    </div> 
</html> 

그러나 unfortunatelly이 코드는 레이아웃 사투리와 함께 작동합니다.

스프링 표준 방언으로 작업하도록 코드를 변환 할 수있는 사람이 있습니까?

내 thymeleaf의 설정 :

public class ThymeleafConfig { 

    @Bean 
    public ServletContextTemplateResolver templateResolver() { 
     ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(); 
     resolver.setPrefix("/WEB-INF/view/"); 
     resolver.setSuffix(".html"); 
     resolver.setTemplateMode("HTML5"); 
     resolver.setOrder(1); 
     resolver.setCacheable(false); 
     return resolver; 
    } 

    @Bean 
    public SpringTemplateEngine templateEngine() { 
     SpringTemplateEngine templateEngine = new SpringTemplateEngine(); 
     templateEngine.setTemplateResolver(templateResolver()); 
     templateEngine.setDialect(new SpringStandardDialect()); 
     //templateEngine.setDialect(new LayoutDialect()); 
     return templateEngine; 
    } 

    @Bean 
    public ThymeleafViewResolver viewResolver() { 
     ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); 
     viewResolver.setTemplateEngine(templateEngine()); 
     viewResolver.setCharacterEncoding("UTF-8"); 
     return viewResolver; 
    } 

} 

답변

1

templateengine에 layoutdialect 추가는 작업을 진행하기에 충분합니다. setDialect을 사용하지 마십시오. addDialect 또는 setAdditionalDialects 방법이나 이와 비슷한 것이 있어야합니다. 추가 된 XML 설정

<beans:bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine"> 
    <beans:property name="templateResolvers"> 
     <beans:set> 
      <beans:ref bean="servletContextTemplateResolver" /> 
      <beans:ref bean="classLoaderTemplateResolver" /> 
     </beans:set> 
    </beans:property> 
    <beans:property name="dialects"> 
     <beans:set> 
      <beans:ref bean="thymeleafSpringDialect" /> 
     </beans:set> 
    </beans:property> 
    <beans:property name="additionalDialects"> 
     <beans:set> 
      <beans:bean class="nz.net.ultraq.thymeleaf.LayoutDialect" /> 
      <beans:bean 
       class="org.thymeleaf.extras.springsecurity3.dialect.SpringSecurityDialect" /> 
      <beans:bean class="ch.mfrey.thymeleaf.extras.with.WithDialect" /> 
      <beans:bean class="ch.mfrey.thymeleaf.extras.cache.CacheDialect" /> 
     </beans:set> 
    </beans:property> 
</beans:bean> 
+0

당신이 당신의 XML을 게시 할 수 있습니다 :

가 UPDATE (나는 그래서 정확한 이름을 모르는 XML의 설정을 사용)? – masterdany88

+0

@ masterdany88 : done –

+0

이전 라이브러리 버전을 사용하는 것 같습니다. 내 경우에는 LayoutDialect와 SpringStandardDialect 중 하나를 선택해야하지만 선택할 수 있는지 확실하지 않습니다. 지금은 데코레이터 모드의 원인 인 LayoutDialect()를 시도 할 것입니다. 희망은 봄의 모든 시설을 놓치지 않을 것이다. – masterdany88