`

将struts的freemarkerManager配置放置在spring容器中维护

阅读更多
原freemarker配置的ftl读取路径是默认在classes下,
增加userConfiguration配置使其可以在web路径下读取ftl

package net.esj.basic.plugins.freemarker;

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletContext;

import net.esj.basic.utils.ApplicationBeanContext;

import org.apache.struts2.views.freemarker.FreemarkerManager;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

import freemarker.template.Configuration;
import freemarker.template.TemplateException;

/**
 * 将struts的freemarkerManager配置放置在spring容器中维护
 * @author Administrator
 *
 */
@Component("springConfigToFreemarkerManager")
@Scope("prototype")
public class SpringConfigToFreemarkerManager extends FreemarkerManager {
	
	private static final String SPRING_FREEMARKER_BEAN = "freemarkerConfig";

	private Configuration userConfiguration;
	
	@Override  
    protected Configuration createConfiguration(ServletContext servletContext)   
            throws TemplateException {   
		FreeMarkerConfigurer fmconfig = (FreeMarkerConfigurer) ApplicationBeanContext.getBean(SPRING_FREEMARKER_BEAN);
        try {
        	Configuration configuration =fmconfig.createConfiguration();
        	configuration.setWhitespaceStripping(true);
			return  configuration;
		} catch (IOException e) {
			e.printStackTrace();
		}   
		return super.createConfiguration(servletContext);
    }   

	protected Configuration createUserConfiguration(ServletContext servletContext) throws TemplateException{
		userConfiguration =createConfiguration(servletContext);
		
		String realpath = servletContext.getRealPath("/");
		
		try {
			userConfiguration.setDirectoryForTemplateLoading(new File(realpath));
		} catch (IOException e) {
			e.printStackTrace();
		}
		return userConfiguration;
	}

	public Configuration getUserConfiguration(ServletContext servletContext) {
		if(userConfiguration==null){
			try {
				createUserConfiguration(servletContext);
			} catch (TemplateException e) {
				e.printStackTrace();
			}
		}
		return userConfiguration;
	}
}



struts.properties文件中
struts.freemarker.manager.classname= net.esj.basic.plugins.freemarker.SpringConfigToFreemarkerManager
分享到:
评论

相关推荐

    struts2的struts.properties配置文件详解

    在这个配置类中可以设置Struts2的各种参数和设置。 3. struts.configuration.files:这是Struts2自动加载的一个配置文件列表,Struts2会自动加载这些文件中的设置和参数。 4. struts.configuration.xml.reload:这...

    Struts课堂笔记.rar--struts2的struts.properties配置文件详解

    是否struts过滤器中提供的静态内容应该被浏览器缓存在头部属性中 struts.serve.static Whether the Struts filter should serve static content or not 是否struts过滤器应该提供静态内容 struts.tag....

    Struts2与Freemarker的配置方法

    6. **结果类型配置**:在Struts2的配置文件中,可以将结果类型设置为`dispatcher`,这将使Struts2使用Freemarker解析并渲染模板: ```xml <result name="success" type="dispatcher">/WEB-INF/ftl/hello.ftl ``` ...

    Struts2属性文件详解

    若需要实现自定义的配置管理器,则需创建一个实现了`Configuration`接口的类,并在类中实现Struts 2配置文件的加载逻辑。 #### struts.locale 此属性指定了Web应用的默认Locale设置,用于确定应用的语言环境和区域...

    struts2的struts.properties介绍

    在Struts2框架中,`struts.properties`文件扮演着极其重要的角色,它用于定义各种配置项来控制框架的行为。下面将详细介绍该文件中的一些关键配置项。 #### struts.action.extension **含义**:此属性指定了用于...

    struts2整合fileupload

    在Struts2中,你可以通过配置`struts.freemarker.manager.class_name`来指定FreemarkerManager。然后,在Action中返回的结果中,可以指定Freemarker模板文件的路径,如上面配置中的`/success.jsp`和`/error.jsp`。 ...

    struts2 源码绝对完整

    在这个版本中,我们可以深入理解Struts2的工作原理,学习如何实现控制器、拦截器、配置管理以及动作等核心概念。 Struts2的核心组件包括以下几个方面: 1. **Action**:Action是业务逻辑的载体,它是处理用户请求...

    struts2.2.3API帮助文档

    在实际开发中,开发者通常会结合这些API,使用Struts2提供的注解或XML配置文件来定义Action、结果类型、拦截器栈等。例如,`@Action`注解可以标记在方法上,指定该方法处理特定的请求,而`struts.xml`文件则可以全局...

    struts2整合FreeMarker开发HelloWorld

    在"Struts2整合FreeMarker开发HelloWorld"的项目中,我们将学习如何在Struts2框架下使用FreeMarker模板技术来创建一个简单的 HelloWorld 示例。首先,我们需要确保我们的开发环境中已经安装了Apache Struts2和...

    struts1.2+freemarker实现登录成功页面静态化例子

    2. 在Struts的配置文件(struts-config.xml)中配置Freemarker插件,指定模板目录、配置文件等参数。 3. 创建Freemarker模板文件(.ftl),定义页面布局和动态内容展示方式。 接着,我们设计登录功能。在Action类中...

    Java项目Freemark生成静态页面及语法

    然后,在`struts.xml`配置文件中设置Freemarker作为视图解析器。例如: ```xml <constant name="struts.action.extension" value="action"/> <constant name="struts.ui.templateEngine" value="freemarker"/> ...

Global site tag (gtag.js) - Google Analytics