Spring.ftl makrolarını Spring MVC, Sitemesh ve Freemarker kullanarak Freemarker şablon sayfasına nasıl alabilirim?Spring MVC, Sitemesh, Freemarker kullanarak spring.ftl içe aktarılıyor
Ted Young's configuration example'a dayanarak Sitemesh ve Freemarker'ı kullanarak bir Spring MVC uygulaması yapılandırdım. Spring MVC/Freemarker tümleştirme referansına göre, backing modelini < @ spring.bind "command.name" /> aracılığıyla bağlamak için spring.ftl makrolarını içe aktarmak gerekir. Bu istisna içinde
<#import "/spring.ftl" as spring>
<@spring.bind "command.user"/>
Sonuçlar:: Ancak bu işlemin
org.springframework.web.util.NestedServletException:
Request processing failed; nested exception is freemarker.
template.TemplateException: Error reading imported file spring.ftl
Others have experienced this issue ama google topraklarda bir çözüm bulmak için henüz ettik. Ayrıca this technique'u kullanmaya başladım (spring.ftl dosyasını zıvanalayarak, META-INF/lib dosyasına yerleştirerek ve zip'i yapı yoluna ekleyerek), ama işe yaramadı.
Teşekkürler! Bu
/**
* Otras configuraciones de la aplicaciones web, incluyendo algunas definidas en
* xml. Usar @ImportResource("classpath:/extra-config.xml") en caso de quererse
* importar configuracion en xml
*/
@Configuration
@PropertySource("classpath:application.properties")
public class WebAppConfig
{
@Autowired
private ServletContext context;
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer placeHolderConfigurer = new PropertySourcesPlaceholderConfigurer();
return placeHolderConfigurer;
}
@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() throws IOException, TemplateException
{
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer()
{
@Override
protected void postProcessConfiguration(freemarker.template.Configuration config) throws IOException, TemplateException
{
WebappTemplateLoader WebAppTplLoader = new WebappTemplateLoader(context, "/WEB-INF/ftl");
ClassTemplateLoader classTplLoader = new ClassTemplateLoader(context.getClassLoader(), "/templates");
ClassTemplateLoader baseMvcTplLoader = new ClassTemplateLoader(FreeMarkerConfigurer.class, "");
MultiTemplateLoader mtl = new MultiTemplateLoader(new TemplateLoader[]
{
WebAppTplLoader,
classTplLoader,
baseMvcTplLoader
});
config.setTemplateLoader(mtl);
}
};
configurer.setDefaultEncoding("UTF-8");
configurer.setPreferFileSystemAccess(false);
return configurer;
}
@Bean
public FreeMarkerViewResolver viewResolver()
{
FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
viewResolver.setExposeSpringMacroHelpers(true);
viewResolver.setExposeRequestAttributes(true);
viewResolver.setPrefix("");
viewResolver.setSuffix(".ftl");
viewResolver.setContentType("text/html;charset=UTF-8");
return viewResolver;
}
}
ilk 2 Önyükleme
kullanarak bir MVC proje için benim özel yapılandırma:
Gerçekten mi? [Spring dokümantasyonunun kendisi] (http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/view.html) '<#import '/spring.ftl' ifadesini kullanmaktadır. bahar /> – Raedwald