2014-11-22 94 views
0

喜歡在話題中,我可以用春天使用Thymeleaf佈局方言嗎? 我必須使用Spring Standard Dialect嗎?我可以用layoutdialect使用spring thymeleaf嗎?

網絡上有這麼多的材料,這讓我非常困惑。

我已經開始使用佈局方言,但我不能去工作整個應用程序。

這裏是我的模板主文件:

<!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> 

但可惜的是這個代碼僅適用於佈局方言。

任何人都可以幫助我轉換該代碼使用春季標準方言嗎?

我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

添加layoutdialect到templateengine應該足以讓它工作。請勿使用setDialect。你應該有一個addDialectsetAdditionalDialects方法或類似的東西。 (我用的是XML配置,所以我不知道確切的名稱)

更新:加入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? – masterdany88 2014-11-23 17:08:35

+0

@ masterdany88:done – 2014-11-23 18:12:17

+0

它看起來像你使用較舊的庫版本。在我的情況下,我必須在LayoutDialect和SpringStandardDialect之間進行選擇,但我不確定選擇。現在我會嘗試LayoutDialect(),裝飾器模式的原因。希望我不會錯過任何春季設施。 – masterdany88 2014-11-23 18:21:40

相關問題