2014-11-22 64 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

相关问题