سؤال

on the Integration with FreeMarker page on the Apache Tiles site it has:

To access ".ftl" files as attributes, register FreeMarkerAttributeRenderer this way (only available in a servlet environment):

@Override
protected void registerAttributeRenderers(
        BasicRendererFactory rendererFactory, TilesApplicationContext applicationContext,
        TilesRequestContextFactory contextFactory,
        TilesContainer container, AttributeEvaluator evaluator) {
    super.registerAttributeRenderers(rendererFactory, applicationContext, contextFactory,
            container, evaluator);
    FreeMarkerAttributeRenderer freemarkerRenderer = new FreeMarkerAttributeRenderer();
    freemarkerRenderer.setApplicationContext(applicationContext);
    freemarkerRenderer.setEvaluator(evaluator);
    freemarkerRenderer.setRequestContextFactory(contextFactory);
    freemarkerRenderer.setParameter("TemplatePath", "/");
    freemarkerRenderer.setParameter("NoCache", "true");
    freemarkerRenderer.setParameter("ContentType", "text/html");
    freemarkerRenderer.setParameter("template_update_delay", "0");
    freemarkerRenderer.setParameter("default_encoding", "ISO-8859-1");
    freemarkerRenderer.setParameter("number_format", "0.##########");
    freemarkerRenderer.commit();
    rendererFactory.registerRenderer("freemarker", freemarkerRenderer);
}

But I cannot figure out where I put this code. What is the normal spot you register this code on/which class do I extend and overwrite? Thanks for your help.

هل كانت مفيدة؟

المحلول

hi,I figured out just now

enter image description here

this is my project herichy, I use java based config, and webconfig is just like web.xml

    @Bean
public TilesConfigurer tilesConfigurer() {
    TilesConfigurer tilesConfigurer = new TilesConfigurer();
    tilesConfigurer.setDefinitions("/WEB-INF/views/tiles/tiles.xml");
    tilesConfigurer.setCheckRefresh(true);
    tilesConfigurer.setTilesInitializer(new pringCompleteAutoloadTilesInitializer());
    return tilesConfigurer;
}

notice tilesConfigurer.setTilesInitializer(new pringCompleteAutoloadTilesInitializer());

this is SpringCompleteAutoloadTilesInitializer

public class SpringCompleteAutoloadTilesInitializer extends    CompleteAutoloadTilesInitializer
{
    @Override
    protected AbstractTilesContainerFactory   createContainerFactory(ApplicationContext context)
    {
        return new SpringCompleteAutoloadTilesContainerFactory();
    }
}

and that SpringCompleteAutoloadTilesContainerFactory is where you wanna put you code

enter image description here

you can check my project here git project

نصائح أخرى

This code goes into your TilesContainerFactory implementation.

(which usually extends BasicTilesContainerFactory).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top