springmvc整合freemarker怎么弄

springmvc整合freemarker整合流程和原理是什么?最好能有个demo!

3个回答

[code="java"]
一、 用macro实现自定义指令,例如:

自定义指令可以使用macro指令来定义。
<#macro greet person>
Hello ${person}!
</#macro>
macro指令自身不打印任何内容,它只是用来创建宏变量,所以就会有一个名为greet的变量。
使用这个宏:
<@greet person="Fred"/>
会打印出:
Hello Fred!
二、用java代码标签实现自定义指令:

可以使用TemplateDirectiveModel接口在Java代码中实现自定义指令。
简单示例如下:
1、实现TemplateDirectiveModel接口。
public class UpperDirective implements TemplateDirectiveModel {
public void execute(Environment env,
Map params, TemplateModel[] loopVars,
TemplateDirectiveBody body)
throws TemplateException, IOException {
if (!params.isEmpty()) {
throw new TemplateModelException(
"parameters 此处没有值!");
}
if (loopVars.length != 0) {
throw new TemplateModelException(
" variables 此处没有值!");
}
if (body != null) {
//执行nested body 与FTL中 <#nested> 类似。
body.render(new UpperCaseFilterWriter(env.getOut()));
} else {
throw new RuntimeException("missing body");
}
}
private static class UpperCaseFilterWriter extends Writer {
private final Writer out;
UpperCaseFilterWriter (Writer out) {
this.out = out;
}

public void write(char[] cbuf, int off, int len)
throws IOException {
char[] transformedCbuf = new char[len];
for (int i = 0; i < len; i++) {
transformedCbuf[i] = Character.toUpperCase(cbuf[i + off]);
}
out.write(transformedCbuf);
}
public void flush() throws IOException {
out.flush();
}
public void close() throws IOException {
out.close();
}
}
}

 说明:<#nested>指令执行位于开始和结束标记指令之间的模板代码段。

2、注入FreeMarkerConfigurer的freemarkerVariables中。
例如:在jeecms-servlet-front.xml

说明:
FreeMarkerConfigurer. 、setFreemarkerVariables(Map variables)
底层调用了FreeMarker的Configuration.setAllSharedVariables()方法。
因为更好的实践是将常用的指令作为共享变量放到Configuration中。

3、调用自定义指令:

 [@upper]
         bar
         [#list ["red", "green", "blue"] as color]
              ${color}
        [/#list]
        baaz
 [/@upper]

4、显示输出结果:
BAR RED GREEN BLUE BAAZ
[/code]

hp8952
hp8952 我能提个无理的要求吗,可以做个简单的demo给我吗?我查过一些资料,弄了几天没成功过,springmvc+freemarker自定义标签的!就整合freemarker我已经弄懂了!hpprj@126.com
大约 5 年之前 回复

[code="java"]
其实也没有什么原理之类的, 大致原理是:将页面中所需要的样式放入FreeMarker文件中,然后将页面所需要的数据动态绑定,并放入Map中,通过调用FreeMarker模板文件解析类process()方法完成静态页面的生成。了解了上面的原理,接下来我就一步 步带您实现FreeMarker生成静态页面。

Demo
http://blog.csdn.net/daryl715/article/details/1657149
[/code]

leehuat
leehuat 里面结合jstl标签
大约 5 年之前 回复
hp8952
hp8952 那freemarker标签呢
大约 5 年之前 回复

[code="java"]
freemarker的xml
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<!-- freemarker的配置 -->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/freemarker/" />
    <property name="defaultEncoding" value="utf-8" />
    <property name="freemarkerSettings">
        <props>
            <prop key="template_update_delay">10</prop>
            <prop key="locale">zh_CN</prop>
            <prop key="datetime_format">yyyy-MM-dd</prop>
            <prop key="date_format">yyyy-MM-dd</prop>
            <prop key="number_format">#.##</prop>
        </props>
    </property>
</bean>
<!-- FreeMarker视图解析 。在这里配置后缀名ftl和视图解析器。。 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"></property>
    <property name="suffix" value=".ftl" />
    <property name="contentType" value="text/html;charset=utf-8" />
    <property name="exposeRequestAttributes" value="true" />
    <property name="exposeSessionAttributes" value="true" />
    <property name="exposeSpringMacroHelpers" value="true" />
</bean>


[/code]

模板ftl
${user.uId}
${user.uName}
${user.uPassword}
<#list userList as u>
${u.uId}
${u.uName}
${u.uPassword}
</#list>

[code="java"]
/**

  • @author kingcs
    */
    @Controller
    @RequestMapping("/springFreemarkerController")
    public class SpringFreemarkerController {

    /**

    • */
      @RequestMapping(value = "/freemarker", method = RequestMethod.GET)
      public String restList(Model model) {

      User user = new User();
      user.setuId(123);
      user.setuName("zhangsan");
      user.setuPassword("123456");
      user.setuBrithday(new Date());

      model.addAttribute("user", user);

      List users = new ArrayList();
      for(int i=0; i<10; i++) {
      User u = new User();
      u.setuId(i);
      u.setuName("zhangsan");
      u.setuPassword("123456");
      users.add(u);
      }
      model.addAttribute("userList", users);
      return "test";
      }
      }
      [/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
springmvc项目源码、整合freemarker
使用springMVC搭建的项目源码,整合freemarker,搭建配置有问题的可以参看一下,有问题留言,一起学习!
SpringMVC整合Freemarker
包括1、SpringMVC的配置 2、Freemarker的配置(freemarkerConfig和freemarkerViewResolver) 以简单的HelloWorld为例
freemarker与springmvc整合的例子
一个比较简单入门的freemarker与springmvc整合的例子。
SpringMVC整合Freemarker例子
SpringMVC简单配置及整合Freemarker例子。SpringMVC+Freemarker
SpringMVC整合freemarker实例程序
Spring MVC注解方式与Freemarker的结合
SpringMVC 整合FreeMarker时的问题
springMVCr的配置如下:rn[code="java"]rnrnrn rn rn rnrn rn rn rn rn rn rn org.springframework.web.servlet.view.freemarker.FreeMarkerViewrn rn rn rn rn rn rn rn rn rnrn[/code]rnController如下:rn[code="java"]rn@Controllerrn@RequestMapping("/user")rn@Scope("prototype")rnpublic class UserController rn rn @RequestMappingrn public String show(@RequestParam long userId,ModelMap model)rn System.out.println(Config.getString("user#Test"));rn User u = userService.getUser(userId);rn System.out.println(u.getUser2().size());rn model.addAttribute("u",u);rn return "/user/test";rn rnrn[/code]rn在WEB-INF的freemarker/user目录下有test.ftl文件,但是通过路径:http://localhost:8080/Test/user?method=show&userId=20访问的时候却不能跳到ftl模板处。rn分析日志时发现有这么几句话:rn2010-01-22 15:48:41,468 [http-8080-1] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'freemarkerConfig'rn2010-01-22 15:48:41,468 [http-8080-1] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Invoking afterPropertiesSet() on bean with name '/user/test'rn2010-01-22 15:48:41,468 [http-8080-1] DEBUG freemarker.cache - Could not find template in cache, creating new one; id=[WEB-INF/freemarker/user/test.ftl[zh_CN,UTF-8,parsed] ]rn[color=red]2010-01-22 15:48:41,500 [http-8080-1] DEBUG org.springframework.web.servlet.view.freemarker.FreeMarkerView - No FreeMarker view found for URL: /WEB-INF/freemarker/user/test.ftl[/color]rn2010-01-22 15:48:41,500 [http-8080-1] DEBUG org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver - Cached view [/user/test]rn2010-01-22 15:48:41,500 [http-8080-1] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Invoking afterPropertiesSet() on bean with name '/user/test'rn2010-01-22 15:48:41,500 [http-8080-1] DEBUG org.springframework.web.servlet.view.InternalResourceViewResolver - Cached view [/user/test]rnrn非常郁闷啊,我在这个目录下确实存在模板文件啊,为什么它说不存在呢??有人知道为什么吗?rn
FreeMarker与SpringMVC整合实例代码教程
原文:FreeMarker与SpringMVC整合实例代码教程 源代码下载地址:http://www.zuidaima.com/share/1825330654350336.htm SpringMVC环境的搭建在这里就不多说了,我们这节主要是FreeMarker与SpringMVC整合 首先,在springmvc的配置文件普通视图之前,加入freemarker的视图 fre-s
基于注解的springmvc 整合freemarker的入门例子
这是一个基于eclipse+springmvc+freemarker+注解的入门例子,是一个war包,import到eclipse就应该可以直接运行,但是确保maven环境到存在;我做为一个入门者,是参照了http://www.blogjava.net/paulwong/archive/2012/03/19/372220.html这个文档,测试通过的。
Java语言SpringMvc整合FreeMarker静态页面生成
说明:FreeMarker是静态页面生成框架,本文章主要写了两个案例且都是基于SpringMvc框架。一个是生成伪静态,一个是生成静态页面。只写具体功能,不做太多解释,代码是干货,想多深入自己慢慢研究。准备工作:现在pom.xml文件中引入FreeMarker包&amp;lt;!--freemarker--&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.freem...
SpringMVC 整合freemarker 出现版本错误
系统运行时出现了以下Exception:   java.lang.IllegalAccessError: tried to access method freemarker.ext.servlet.AllHttpScopesHashModel.&amp;lt;init&amp;gt;(Lfreemarker/template/ObjectWrapper;Ljavax/servlet/ServletConte...
SpringMVC和FreeMarker整合Hibernate-validator在页面渲染校验错误信息
1、整合背景 项目中使用了SpringMVC整合FreeMarker作为页面渲染,在后台管理端页面存在大量的form输入项,每个输入项在提交到Controller层时都需要对数据的有效性进行校验,工作量非常大而且繁琐。 2、校验框架 为了解决数据校验的问题,调研了一下Hibernate-validator,发现该框架功能非常的全面,能很好的解决我遇到的数据校验问题,官方文档:https://...
SpringMVC整合FreeMarker产生模板视图
引入包: org.freemarker freemarker 2.3.20 第一次引入的包groupId为freemarker,版本2.3.8,报错,改为org.freemarker正常。 配置: &lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot; xmlns:mvc=&quot;http:/
SpringMVC JSP与Freemarker视图解释器整合
Spring MVC中如果只使用JSP做视图,可以使用下面这段即可解决:<!-- 视图解释类 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property n
springMVC 整合freemarker 出现版本错误
java.lang.IllegalAccessError: tried to access method freemarker.ext.servlet.AllHttpScopesHashModel.&amp;lt;init&amp;gt;(Lfreemarker/template/ObjectWrapper;Ljavax/servlet/ServletContext;Ljavax/servlet/http/H...
springmvc国际化+freemarker整合 一步步走来
这里记录一下 ‘打杂’工作的spring国际化  记录一下  同时也是帮助各位朋友! 一,加入两个配置文件,分别是中英文 二,在spring-mvc.xml文件里加入这些配置                                                                   messages/message        
springmvc整合freemarker时,freemarker使用include的根路径的问题
我把公用的头部,底部放入各自的ftl文件中。这些文件存在webapp/common下 正常的ftl如index.ftl放在了webapp/WEB-INF/page/下 在index.ftl 里我用include指令包含头部和底部 我以为这里的/相当于webapp的根目录。 实际上,好像是spring的xml里配置的 /WEB-INF/boss/pages/
springmvc mybatis freemarker
springmvc mybatis freemarker
springMVC + freemarker + apache tiles
集成上面三大框架, 里面有解析Ibatis的简单用法。
springmvc mybatis freemarker 分页
求一个springmvc mybatis freemarker中传参的分页实例,比如:查询一个类型的所有分页信息 谢谢
springmvc + freemarker配置
这是一个完整的springmvc + freemarker的配置,我是用myeclipse8.5配置的,下载下来就可以直接部署运行。
Springmvc + freemarker 国际化问题
message_zh_CN.properties里rnrnmessage.saveFirst=0未保存,请先保存!rnmessage.file=文件rnmessage.vedio=视频rnrnftl里rn...rn$springMacroRequestContext.getMessage("message.saveFirst",["message.file"])rn...rnrnhttp://www.iteye.com/problems/new#rn我记得貌似是可以这样组合的,但是忘了怎么去实现了.rnrn3Q.
【Freemarker】SpringMVC使用Freemarker作为视图解析
What is Freemarker?FreeMarker是一个基于Java的模板引擎,最初专注于使用MVC软件架构生成动态网页。但是,它是一个通用的模板引擎,不依赖于servlets或HTTP或HTML,因此它通常用于生成源代码,配置文件或电子邮件。( from wikipedia.org) 官方网站:http://freemarker.org/How to use Freemarker?本文中
FreeMarker整合Spring_3
本资源实现了Freemarker 和spring3整合,对Freemarker或者spring的初学者都是很有好处的
ssm整合外加freemarker
ssm项目整合,外加freemarker框架,maven项目,欢迎下载学习!!!
freemarker插件及与struts2的整合
首先在http://sourceforge.net/project/showfiles.php?group_id=163305下载插件,解压,将 hudson.freemarker_ide_0.9.14文件夹放入eclipse下的plugins文件夹。 发现hudson.freemarker_ide_0.9.14下的freemarker-2.3.6.jar包是比较早的版本,用新的 ...
Springboot整合FreeMarker
包含技术Linux、Redis、spring boot、文件上传下载、FreeMarker、thymeleaf、spring jdbc、Spring Data JPA、 MyBatis、 Mybatis Generator逆向生成、CKEditor、AJAX异步上传文件、Jersey实现应用服务器和文件服务器分离、Elasticsearch
SpringBoot整合Freemarker(1)
SpringBoot基础篇主要是带着大家把前面学习过的Spring,SpringMVC...框架整合到一起做一下JavaWeb项目,学习完后能掌握SpringBoot的核心基础内容,为后面微服务架构开发打基础!
SpringBoot整合Freemarker(2)
SpringBoot基础篇主要是带着大家把前面学习过的Spring,SpringMVC...框架整合到一起做一下JavaWeb项目,学习完后能掌握SpringBoot的核心基础内容,为后面微服务架构开发打基础!
SpringBoot整合Freemarker(4)
SpringBoot基础篇主要是带着大家把前面学习过的Spring,SpringMVC...框架整合到一起做一下JavaWeb项目,学习完后能掌握SpringBoot的核心基础内容,为后面微服务架构开发打基础!
Spring之FreeMarker整合(测试)
本教程从基础的三大框架开始介绍,到进行整合,同时加入了FreeMarker模板和Spring OSGI的说明及应用。后以Maven项目进行整理,让学员能够将知识融会贯通,活学活用,把技术知识运用到实际的项目中来。其中分布介绍了,各个框架的基本独立使用,以及后续Maven的安装和应用,包括私服Nexus的搭建解决网络问题。项目中对EasyUI的通用及独特之处均有相应的模板。
freemarker 与sitemesh 整合例子
freemarker 与sitemesh 整合!是一个不错的例子
整合jsp和freemarker
授课环境:mac+idea+jdk8。课程通过实践编码,针对常用功能进行讲解。 第一章: 以hello word为切入点详细讲解返回json数据,整合jsp/freemarker模板。 第二章:servlet、过滤器、监听器、拦截器配置及使用场景 第三章:讲解日志、静态资源、启动加载数据处理方式 第四章:数据库配置,jdbctemplate、mybatis、事务原理及实现 第五章:服务发布部署
springmvc整合
给弟弟搞的一个玩具型工程,喜欢的可以搞去玩玩
springMVC整合
spring+mvc 组合
SpringMvc学习笔记——SpringMvc整合Mybatis(ssm整合)
应为Spring与SpringMVC浑然一体,所以SpringMvc整合Mybatis,就是Spring与Mybatis整合,再将其搭建成WEB环境即可。 将Spring与Mybatis整合: https://blog.csdn.net/hu18315778112/article/details/88091145 整合完后,在项目的web.xml中配置Spring容器和SpringMV...
SpringMVC整合
SpringMVC整合+ mybatis 实现的增删改查 很适合想学习的人。
FreeMarker整合Spring 3.0
NULL 博文链接:https://fanjf.iteye.com/blog/1455446
springboot整合freemarker
本项目解决了搭建springboot过程中遇到的以下几个问题: 1.不需要tomcat启动web页面 2.修改启动的端口号 3.修改配置文件的目录 4.整合freemarker,并使用layout结构 5.修改项目的目录结构
Freemarker整合Spring
本例从后台数据封装到ftl页面,及sprign配置文件,web.xml文件全部包括,部署好后使用maven重新编译,就可以运行
SpringBoot整合Freemarker
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的应用开发领域(rapid application development)成为领导者。
相关热词 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天 c#func链接匿名方法 c#怎么创建文件夹 c#从键盘接收空格 c#da/ad c#部门请假管理系统 c#服务器socket c# 默认的访问修饰符