frameMarker之TemplateDirectiveModel

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{
@Autowired
private IService iService;
/**
*当模板页面遇到用户自定义的标签指令时,该方法会被执行。
*@param env:系统环境变量,通常用它来输出相关内容,比如env.getOut();
*@param params:自定义标签传过来的对象,其key=自定义标签的参数名,valuez值是TemplateModel类型,而TemplateModel是一个接口类型,通常我们都使用TemplateScalarModel接口替代它获取一个String值
*@param loopVars:循环替代变量
*@param body 用于处理自定义标签中的内容,如<@myDirective>将要被处理的内容;当标签是<@myDirective/>格式时,body=null
**/
public void execute(Enviroment env,Map params,TemplateMode[] loopVars TemplateDirectiveBody body) throws TemplateException,IOException{
int comeon=params.get("comeon");
List> 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的配置文件



myDispatcher
org.springframework.web.servlet.DispatcherServlet


contextConfigLocation

classpath*:conf/applicationContext.xml,
classpath*:conf/spring-datasource.xml,
classpath*:conf/spring-freemarker.xml


1


myDispatcher
*.html




myDispatcher
*.do







spring-freemarker.xml中配置









/page/












wo.ftl

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


frameMarker之TemplateDirectiveModel_第1张图片


你可能感兴趣的:(frameMarker之TemplateDirectiveModel)