(1)新增自定义ViewResolver
package com.zcrm.resolver; import java.util.Locale; import java.util.Map; import org.springframework.web.servlet.View; import org.springframework.web.servlet.ViewResolver; public class MultViewResolver implements ViewResolver { private Map<String, ViewResolver> resolvers; @Override public View resolveViewName(String viewName, Locale locale) throws Exception { int n = viewName.lastIndexOf("."); String suffix = ""; if (n == (-1)) { suffix = "jsp"; } else { suffix = viewName.substring(n + 1); viewName = viewName.substring(0, n); } // 根据下划线后面的字符串去获取托管的视图解析类对象 ViewResolver resolver = resolvers.get(suffix); if (resolver != null) { return resolver.resolveViewName(viewName, locale); } else { return null; } } public Map<String, ViewResolver> getResolvers() { return resolvers; } public void setResolvers(Map<String, ViewResolver> resolvers) { this.resolvers = resolvers; } }
(2)修改spring-mvc.xml,使用自定义ViewResolver
<bean id="zcrmViewResolver" class="com.zcrm.resolver.MultViewResolver"> <property name="resolvers"> <map> <!-- 定义跳转的文件的前后缀 ,视图模式配置 --> <entry key="jsp"> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/pages/" /> <property name="suffix" value=".jsp" /> </bean> </entry> <entry key="ftl"> <bean id="viewResolverFtl" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" /> <property name="contentType" value="text/html; charset=utf-8" /> <property name="cache" value="true" /> <property name="prefix" value="" /> <property name="suffix" value=".ftl" /> </bean> </entry> </map> </property> </bean> <!-- ******************************freeMarker配置【START】****************************** --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/jsp/ftl/" /> <property name="freemarkerVariables"> <map> <entry key="xml_escape" value-ref="fmXmlEscape" /> </map> </property> <property name="defaultEncoding" value="utf-8" /> <property name="freemarkerSettings"> <props> <prop key="template_update_delay">3600</prop> </props> </property> </bean> <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape" /> <!-- ******************************freeMarker配置【END】****************************** -->
(3)新增freemarker.jar
(4)编写ftl文件
datatables.ftl
(5)编写测试Controller
package com.zcrm.controller.crm2.freemarker; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/crm2/freemarker") public class Crm2FreeMarkerController { @RequestMapping(value={"/init"},method=RequestMethod.GET) public String updatePassword(HttpServletRequest req, Model model) { return "crm2/datatables.ftl"; } }
相关推荐
本篇文章将深入探讨如何在Spring中配置Freemarker视图解析器,以及如何配置多个视图解析器以实现更灵活的应用场景。 首先,让我们了解如何配置单个Freemarker视图解析器。在Spring的配置文件(如`...
在这个"springMVC 多视图配置(Jsp Freemarket Json)实例"中,我们将探讨如何在 SpringMVC 中设置多种视图解析器来支持 Jsp、FreeMarker 和 Json 格式的响应。 **1. 视图解析器 (View Resolver)** 在 SpringMVC ...
在Struts2中,配置Freemarker视图涉及到在`struts.xml`配置文件中设置`result`类型为`freemarker`,并指定对应的模板文件路径。在模板文件中,使用Freemarker语法(如`${}`)来引用Action的属性。案例中的Freemarker...
总结来说,通过Spring配置Freemarker视图解析器,我们可以将后端的Java逻辑与前端的HTML呈现分离,使得开发更加模块化。Freemarker的强大模板语言则提供了丰富的功能,让开发者能方便地创建动态页面。通过熟练掌握...
"nutz的freemarker视图插件"使得Nutz框架能够无缝地集成Freemarker,提供了以下关键特性: 1. **配置**: - 在Nutz项目中添加`nutz-freemarker-plugin.jar`库,配置Nutz的MVC模块,指定视图解析器为Freemarker。 ...
Struts2的Action结果可以映射到Freemarker模板,使得数据模型可以直接传递给模板,简化了视图的构建。 3. **安装Freemarker模板文件插件**: - 开发者可以使用FreeMarkerIDE这样的Eclipse插件来增强Freemarker模板...
4. **Freemarker的集成**:为了使用Freemarker作为视图渲染引擎,需在Struts2的配置文件中声明Freemarker插件,并配置其路径。例如: ```xml <constant name="struts.freemarker.config" value="/WEB-INF/...
**FreeMarker** 是一个模板引擎,它允许开发者将业务逻辑与视图层分离,使页面呈现更加灵活。FreeMarker模板语言(FTL)是一种简单的文本格式,用于描述如何在HTML或其他文档类型中动态生成内容。在Struts2框架中,...
本实例探讨的是如何在Spring环境中整合Spring MVC、Spring Data JPA以及使用Freemarker或JSON作为多视图配置。让我们深入理解这些技术及其相互作用。 首先,Spring MVC是Spring框架的一部分,专门用于构建Web应用...
**FreeMarker与Struts2的整合配置详解** ...通过这些配置和使用技巧,你可以高效地利用FreeMarker与Struts2进行Web开发,实现强大的视图层功能。记住,实践是检验配置正确性的最好方式,所以动手尝试并调试你的代码吧!
4. **FreeMarker** 作为模板引擎,允许开发者分离视图和逻辑,使前端代码更清晰、可维护。 整合这些框架可以创建出一个松耦合、易于测试和扩展的系统。然而,配置过程可能会比较复杂,需要理解每个框架的工作原理...
Freemarker是一个强大的模板引擎,常用于JavaEE应用中的视图层处理,尤其与Struts2等MVC框架配合使用,能实现灵活的动态页面渲染。这个"freemarker Demo"是一个适合初学者的示例项目,旨在帮助新接触Freemarker的...
FreeMarker 是一个强大的模板引擎...随着对FreeMarker的深入学习,你会发现它能实现更复杂的逻辑和布局,成为强大的视图层解决方案。在实际开发中,FreeMarker常与Spring MVC等框架配合使用,实现MVC模式下的模板渲染。
在MyEclipse中配置Freemarker模板,可以实现快速生成常见的Java Web项目中的视图层代码,如动态页面。例如,你可以为不同的页面元素(如头部、导航栏、内容区域等)创建模板,并在需要的地方插入这些模板,使得代码...
在Controller层,我们可以创建一个ModelAndView对象,将数据模型放入其中,然后通过FreeMarker视图解析器来渲染对应的FTL文件。 5. **模板缓存** 为了提高性能,FreeMarker支持模板缓存。一旦模板被加载并编译,就...
2. **配置Struts2**:在`struts.xml`配置文件中指定FreeMarker作为视图解析器。 3. **模板目录**:设置项目中的FreeMarker模板文件存放位置。 4. **Action返回值**:Action类的execute方法返回一个结果字符串,对应...
它允许开发者使用简单的模板语言(TL)来分离业务逻辑和视图层。本篇将深入探讨如何自定义FreeMarker标签,以扩展其功能并适应特定项目需求。 首先,理解FreeMarker的默认标签语法至关重要。FreeMarker使用${...}...
在Struts2中,FreeMarker模板作为视图层,用于渲染控制器处理后传递的数据。FreeMarker模板语言简洁且强大,可以动态地将数据模型与HTML模板结合,生成最终的网页。开发者可以通过 `${}` 符号来引用数据模型中的变量...
- **配置**: 创建`Configuration`对象来设定Freemarker的配置,如模板目录、编码等。 - **加载模板**: 使用`Configuration`对象加载模板文件。 - **设置数据模型**: 通过`Map`对象将Java数据绑定到模板。 - **...
在Web应用中,FreeMarker常与Model-View-Controller(MVC)模式结合使用,控制器将处理业务逻辑,模型提供数据,而FreeMarker作为视图负责渲染输出。 8. **错误处理和调试** FreeMarker提供了丰富的错误处理机制...