原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的各种参数和设置。 3. struts.configuration.files:这是Struts2自动加载的一个配置文件列表,Struts2会自动加载这些文件中的设置和参数。 4. struts.configuration.xml.reload:这...
是否struts过滤器中提供的静态内容应该被浏览器缓存在头部属性中 struts.serve.static Whether the Struts filter should serve static content or not 是否struts过滤器应该提供静态内容 struts.tag....
6. **结果类型配置**:在Struts2的配置文件中,可以将结果类型设置为`dispatcher`,这将使Struts2使用Freemarker解析并渲染模板: ```xml <result name="success" type="dispatcher">/WEB-INF/ftl/hello.ftl ``` ...
若需要实现自定义的配置管理器,则需创建一个实现了`Configuration`接口的类,并在类中实现Struts 2配置文件的加载逻辑。 #### struts.locale 此属性指定了Web应用的默认Locale设置,用于确定应用的语言环境和区域...
在Struts2框架中,`struts.properties`文件扮演着极其重要的角色,它用于定义各种配置项来控制框架的行为。下面将详细介绍该文件中的一些关键配置项。 #### struts.action.extension **含义**:此属性指定了用于...
在Struts2中,你可以通过配置`struts.freemarker.manager.class_name`来指定FreemarkerManager。然后,在Action中返回的结果中,可以指定Freemarker模板文件的路径,如上面配置中的`/success.jsp`和`/error.jsp`。 ...
在这个版本中,我们可以深入理解Struts2的工作原理,学习如何实现控制器、拦截器、配置管理以及动作等核心概念。 Struts2的核心组件包括以下几个方面: 1. **Action**:Action是业务逻辑的载体,它是处理用户请求...
在实际开发中,开发者通常会结合这些API,使用Struts2提供的注解或XML配置文件来定义Action、结果类型、拦截器栈等。例如,`@Action`注解可以标记在方法上,指定该方法处理特定的请求,而`struts.xml`文件则可以全局...
在"Struts2整合FreeMarker开发HelloWorld"的项目中,我们将学习如何在Struts2框架下使用FreeMarker模板技术来创建一个简单的 HelloWorld 示例。首先,我们需要确保我们的开发环境中已经安装了Apache Struts2和...
2. 在Struts的配置文件(struts-config.xml)中配置Freemarker插件,指定模板目录、配置文件等参数。 3. 创建Freemarker模板文件(.ftl),定义页面布局和动态内容展示方式。 接着,我们设计登录功能。在Action类中...
然后,在`struts.xml`配置文件中设置Freemarker作为视图解析器。例如: ```xml <constant name="struts.action.extension" value="action"/> <constant name="struts.ui.templateEngine" value="freemarker"/> ...