freemaker学习笔记

匿名 (未验证) 提交于 2019-12-03 00:25:02
一、freemarker是一个基于java的模板引擎。是mvcView视图层的促进。  1.分离表现层和业务逻辑。 2.可以提高开发效率 3.使得开发过程中的人员分工更加明确  二、view解析model数据 1.基本数据取值
String/int/long/double/boolean username   -->           ${username!} !代表usernamenull,不显示      boolean username=true  -->           ${username?String('yes','no')}  转义为yesno不能显示truefalse      null   ${null!'我是空变量'}      missing 变量不存在 ${missing!'我是不存在'}      List<User> userList -->          <#list userList as item>${item.name}--${item.birthday?String('yyyy-MM-dd HH:mm:ss')}</list>            转义日期,freemaker识别sql包下的Date,不识别util包下的Date,需要转义。
2.变量赋值、运算
<#assign a=100/>     a = <font color="red">${a}</font><br/>     a+100 = <font color="red">${a+100}--${a*100}</font><br/>
3.封装对象取值
mav.addObject("userObj",user);         ${(userObj.brief)!"default_value"}     html文本原类型输出         ${(userObj.brief)!?html}
4.集合
List 有序,可重复      List<String> list --> String         <#list list as item>${item!}</list>     List<User> userList --> User对象         <#list userList as item>${item.name}--${item.birthday?String('yyyy-MM-dd HH:mm:ss')}</list>      Map 无序,不重复      <#list map?keys as key>         <font color="red">${key}:${map[key]}</font></br>     </#list>
5.if else条件
<#assign var=100/>      <#if var==99>         <font color="red">var=99</font>     </#if>      <#if var==99>         <font color="red">var=99</font>     <#else>         <font color="red">var!=99</font>     </#if>      <#if var &gt; 99>         <font color="red">var大于99</font>     <#elseif var==99>         <font color="red">var=99</font>     <#else>         <font color="red">var小于99</font>     </#if>      判断是否存在      <#if list??></#if>      <#if !( (var=='python'&&var?length==6)|| var='java' )></#if>
6.switch 支持String
<#assign var =11/>      <#switch var>         <#case 10>         <#case 11>         10 or 11          <#break>          <#case 100>         100          <#break>          <#default>         other     </switch>
7.字符串操作
<#assign a="hello"/>     <#assign b="world"/>      连接  ${a + b}     截取  ${(a + b)?substring(5,8)}  -- wor     长度   ${(a + b)?length}          大写   ${(a + b)?upper_case}          小写  ${(a + b)?lower_case}       index_of ${(a + b)?index_of('w')}  --5      last_index_of ${(a + b)?last_index_of('w')}  --7        替换   ${(a + b)?replace('o','xx')}        <#assign myList=[2,4,5,6,3,6,4,9,1]/>      <#list myList?sort?reverse as item> reverse倒叙         下标${item_index}:值${item}     </#list>     ${myList?size}     ${myList[3]}
三、其他操作 1.自定义函数  实现接口TemplateMethodModelEx,将实现类传入mav.addObject("sort_method",SortMethod);  2.自定义指令  实现接口TemplateDirectiveModel,配置xml文件  3.内建函数
处理字符串 substring,cap_first,ends_with,contains                 date,datetime,time                 starts_with,index_of,last_index_of,split,trim 处理数字      stringx?string("0,##"),roundfloor,ceiling 处理list  first last, seq_contains,seq_index_of,size,reverse,sort,sort_by,chunk 其他内建函数 is_string is_numberis_method,eval求值
代码实现

四、base路径获取 1.spring-mvc.xml
<!-- FreeMarker视图解析 如返回userinfo。。在这里配置后缀名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="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" />     <property name="requestContextAttribute" value="request" />     <property name="cache" value="true" />     <property name="order" value="0" /> </bean>
其中<property name="requestContextAttribute" value="request" />是关键。 ftl页面获取
<#assign base=request.contextPath /> <!DOCTYPE html> <html lang="zh"> <head>     <base id="base" href="${base}">     <title>首页</title>     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">     <link href="${base}/static/bootstrap-3.3.4/css/bootstrap.min.css" rel="stylesheet">     <script src="${base}/static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
js获取
var base = document.getElementById("base").href; // 与后台交互 _send = function(async, url, value, success, error) {     $.ajax({         async : async,         url : base + '/' + url,         contentType : "application/x-www-form-urlencoded; charset=utf-8",         data : value,         dataType : 'json',         type : 'post',         success : function(data) {             success(data);         },         error : function(data) {             error(data);         }     }); };
转载请标明出处:freemaker学习笔记
文章来源: freemaker学习笔记
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!