frameMarker之TemplateDirectiveModel

来源:互联网 发布:gif屏幕录像软件 编辑:程序博客网 时间:2024/06/16 04:39
frameMarker之TemplateDirectiveModel


项目以spring+frameMarker+mybatis

import freemarker.core.Enviroment;import freemarker.template.Configuration;import freemarker.template.DefaultObjectWrapper;import freemarker.template.TemplateDirectiveBody;import freemarker.template.TemplateDirectiveModel;import freemarker.template.TemplateException;import freemarker.template.TemplateModel;@Component("myController") //把普通的pojo实例化到spring容器public class MyController implements TemplateDirectiveModel{@Autowiredprivate IService iService;/***当模板页面遇到用户自定义的标签指令时,该方法会被执行。*@param env:系统环境变量,通常用它来输出相关内容,比如env.getOut();*@param params:自定义标签传过来的对象,其key=自定义标签的参数名,valuez值是TemplateModel类型,而TemplateModel是一个接口类型,通常我们都使用TemplateScalarModel接口替代它获取一个String值*@param loopVars:循环替代变量*@param body 用于处理自定义标签中的内容,如<@myDirective>将要被处理的内容</@myDirective>;当标签是<@myDirective/>格式时,body=null**/public void execute(Enviroment env,Map params,TemplateMode[] loopVars TemplateDirectiveBody body) throws TemplateException,IOException{int comeon=params.get("comeon");List<Map<String,Object>> mapList = iService.getList(comeon);if(body != null){env.setVariable("mapList",new DefaultObjectWrapper(Configuration.VERSION_2_3_23).wrap(mapList));body.render(env.getOut());}}}


在web.xml中指定freemarker的配置文件

<web-app><servlet><servlet-name>myDispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></servlet><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:conf/applicationContext.xml,classpath*:conf/spring-datasource.xml,classpath*:conf/spring-freemarker.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>myDispatcher</servlet-name><url-pattern>*.html</url-pattern><!--前台请求--></servlet-mapping><servlet-mapping><servlet-name>myDispatcher</servlet-name><url-pattern>*.do</url-pattern><!--后台请求--></servlet-mapping></web-app>






spring-freemarker.xml中配置

<!--配置FreeMarker的配置文件-->

<bean id="cf" class="org.springframework.beans.factory.config.PropertiesFactoryBean"><property name="location" value="classpath:my.properties"/></bean><!--配置FreeMarker的模板路径--><bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"><property name="freemarkerSettings" ref="cf"/><property name="templateLoaderPaths"><list><value>/page/</value></list></property><!--自定义FreeMarkerVariables的指令及方法--><property name="freemarkerVariables"><map><entry key="myV" value-ref="myController"/></map></property></bean>




wo.ftl

<@myV comeon=2><#list mapList as temp>名称:${temp.name}</#list></@myV>



0 0
原创粉丝点击