Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Spring4、Tiles和Freemarker集成问题_Spring Mvc_Freemarker_Apache Tiles_Tiles 3 - Fatal编程技术网

Spring mvc Spring4、Tiles和Freemarker集成问题

Spring mvc Spring4、Tiles和Freemarker集成问题,spring-mvc,freemarker,apache-tiles,tiles-3,Spring Mvc,Freemarker,Apache Tiles,Tiles 3,在我的SpringMVC项目中,我使用Tiles来消除任何冗余的页面结构代码。作为一个视图渲染器,我首先选择了Thymeleaf,因为它被描述为一个有前途的新手,而且非常容易使用。 不幸的是,Thymeleaf与Tiles的集成依赖于不推荐使用的Spring(Tiles2)类,而且唯一的Thymeleaf论坛几乎处于非活动状态,大多数问题仍然没有答案 因此,我想切换到Freemarker,因为它有一个完善的用户社区,而且Spring也支持它。但是集成的SpringMVC、Tiles3和Freem

在我的SpringMVC项目中,我使用Tiles来消除任何冗余的页面结构代码。作为一个视图渲染器,我首先选择了Thymeleaf,因为它被描述为一个有前途的新手,而且非常容易使用。 不幸的是,Thymeleaf与Tiles的集成依赖于不推荐使用的Spring(Tiles2)类,而且唯一的Thymeleaf论坛几乎处于非活动状态,大多数问题仍然没有答案

因此,我想切换到Freemarker,因为它有一个完善的用户社区,而且Spring也支持它。但是集成的SpringMVC、Tiles3和Freemarker的配置显然没有文档记录,互联网上的大多数示例都使用Tiles结合JSP或Freemarker而不使用Tiles,但我找不到一个清晰、有效的集成示例

我对Spring MVC和配置不是很有经验,但我认为必须解决以下问题:

-加载平铺定义文件。根据一些示例,可以在MvcConfig类中使用以下方法完成:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "nl.drsklaus.activiteitensite.web")
public class MvcConfig extends WebMvcConfigurerAdapter  {

  ...other methods

    @Bean
    public TilesConfigurer tilesConfigurer() {
        TilesConfigurer tc = new TilesConfigurer();
        tc.setDefinitions(new String[] {"/WEB-INF/views/tiles/defs/tiles-defs.xml"});

        return tc;
    }

}
@Bean
public ViewResolver tilesViewResolver() {
    TilesViewResolver viewResolver = new TilesViewResolver();
      viewResolver.setViewClass(TilesView.class);
//  viewResolver.setOrder(1);
    return viewResolver;
}
-将控制器方法返回的字符串解析为平铺定义:

应在MvcConfig类中使用以下方法完成此操作:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "nl.drsklaus.activiteitensite.web")
public class MvcConfig extends WebMvcConfigurerAdapter  {

  ...other methods

    @Bean
    public TilesConfigurer tilesConfigurer() {
        TilesConfigurer tc = new TilesConfigurer();
        tc.setDefinitions(new String[] {"/WEB-INF/views/tiles/defs/tiles-defs.xml"});

        return tc;
    }

}
@Bean
public ViewResolver tilesViewResolver() {
    TilesViewResolver viewResolver = new TilesViewResolver();
      viewResolver.setViewClass(TilesView.class);
//  viewResolver.setOrder(1);
    return viewResolver;
}
我的第一个问题是,这个Tiles视图解析器是否应该在某种程度上具有“Freemarker意识”。根据Tiles文档,属性'type=“freemarker”'应该添加到标签以及Tiles定义XML文件中的标签中,但我不清楚这会产生什么影响。 此外,这些put属性标记的value属性中引用的片段必须解析为Freemarker模板,而不是JSP。我不知道应该如何配置它

事实上,我不清楚Spring中一个Tiles片段的查找/解析过程是如何工作的。扩展名.ftl是不是让Spring知道它应该寻找一个Freemarker模板

一些示例列出了如下代码片段:

@Bean
public FreeMarkerConfigurer freemarkerConfigurer() {
    FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
    configurer.setTemplateLoaderPath("/WEB-INF/views/freemarker");
    configurer.setDefaultEncoding("utf-8"); 
    return configurer;
}
对于SpringMVC来说,这种方法足以从平铺定义加载Freemarker模板吗?Spring如何“知道”平铺引用的模板实际上是Freemarker模板?还存在一个FreeMarkerViewResolver类,它扩展了UrlBasedViewResolver。但我不清楚我们是否应该以及如何使用这个类


我希望得到一些澄清,甚至可能是一个集成示例:)

没有人对此有任何答案?甚至连春天的男孩都没有??