freemaker基础语法
1.freemarker中Request,Session的用法:
java块:request.getSession().setAttribute("qq","http://www.qq.com");
request.setAttribute("qq", "http://www.qq.com");
freemarker代码:
<#if Session ["qq"] exists>//Request的用法同session
<#if Session ["qq"]=="http://www.qq.com">
<#else>
</#if>
<#else>
</#if>
而通常情况下,Request和Session均可省去不写:
<#if qq exists>//Request的用法同session
<#if qq=="http://www.qq.com">
<#else>
</#if>
<#else>
</#if>
但是如果他们都设有相同的key值,那么在页面中显示的话,就就应该把他们加上去。
2.freemarker中导入样式表的写法,已经javascript的写法注意:
引入样式表:<LINK href="*.css" type=text/css rel=stylesheet>
添加样式表:
<style type="text/css">
.imgs img{width:150px ; height:70px;}
</style>
javascript块:
<script language="JavaScript" >
function method(para){
}
</script>
3.判断集合:
集合的集合:
<#if voteWraperObj.itemList size gt 0>
<#list voteWraperObj.itemList as voteList>
</#list> </#if>
对象的集合:
<#if softDetail size gt 0>
<#list softDetail as softlist>
</#list>
</#if>
关于Session中存放的对象的属性的读取:
<#if Session ["userweb"].member exists>
4.switch/case的用法:
<#switch type>
<#case "down">
<#include "softdown.ftl">
<#break>
<#case "photo">
<#if para=="photoSquare">
<#include "photo.ftl">
<#elseif para=="photoWidth">
<#include "photo.ftl">
<#else>
</#if>
<#break>
</#switch>
5.时间类型在页面是如何才能正常显示的:
如:${newslist.pubTime string('yyyy-MM-dd')}
${newslist.pubTime string("yyyy-MM-dd HH:mm:ss")}
6.判断存在与否,以及是否有效:
如:<#if goodslist.f_goods_url exists&&goodslist.f_goods_url length gt 0>
7.“default”是如何使用的:
如: ${qq default("http://www.qq.com")}
即如果属性qq不存在,那么就是要default中的值替代。
8.<#assign>的用法:
<#assign count=0>
<#assign str="12345">
<#list 0..9 as i>
<#assign count=count+1>
<#if i gt str length>
${count}
</#if>
</#list>
输出为:7 8 9 10
9.freemarker中如何截取字符串:
方法1: substring(,)||方法2:[,]
区别:前者包头不包未,后者包头又包未:
实例:<#assign count=0>
<#assign str="12345">
${str[count..count+1]}
${str substring(count,count+1)}
输出为:12,1
<#assign count=0>
<#assign str="12345">
${str[count..count]}<br/>
${str substring(count,count+1)}
这时输出均为:1
10.freemarker页面中如果包含
<#assign html=JspTaglibs["/WEB-INF/struts-html.tld"]>
<@html.base/>
那么它所指向的路径都是相当路径(相对于当前文件)。
11.如何让freemarker模板当html来使用呢:(完整的页面如下)
<html>
<head>
<#assign html=JspTaglibs["/WEB-INF/struts-html.tld"]>
<#assign bean=JspTaglibs["/WEB-INF/struts-bean.tld"]>
<#assign logic=JspTaglibs["/WEB-INF/struts-logic.tld"]>
<@html.base/>
<link href="css/main.css" rel="stylesheet" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset="utf-8">
</head>
<body>
---------freemarker代码块
</body>
</html>
12. 使用内建的int(后面讲述)获得整数部分
如${1.1 int} = 1
13.比较操作符:
1使用=(或==,完全相等)测试两个值是否相等,使用!= 测试两个值是否不相等。
2.对数字和日期可以使用<、<=、>和>=,但不能用于字符串
3.由于Freemarker会将>解释成FTL标记的结束字符,所以对于>和>=可以使用括号来避免这种情况,例如<#if (x > y)>,另一种替代的方法是,使用lt、lte、gt和gte来替代<、<=、>和>=
14.内建函数:
html:对字符串进行HTML编码
cap_first:使字符串第一个字母大写
lower_case:将字符串转换成小写
upper_case:将字符串转换成大写
trim:去掉字符串前后的空白字符
size:获得序列中元素的数目
int:取得数字的整数部分(如-1.9 int的结果是-1)
15.根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation
如:<#setting number_format="currency"/>
<#assign answer=42/>
输出结果是:$42.00
单个Interpolation:
${answer string.number}
${answer string.currency}
${answer string.percent}
16. 插入日期值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation
如:${lastUpdated string("yyyy-MM-dd HH:mm:ss zzzz")}
17.Session中设置对象属性的判断:
Session ["userweb"].member exists
18. 插入布尔值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation.
如:<#assign or=true/>
${or string("You are right!", "You are wrong!")}
输出为:You are right!
19. 数字Interpolation的#{expr; format}形式可以用来格式化数字,format可以是:
mX:小数部分最小X位
MX:小数部分最大X位
如:<#assign x=2.582/>
<#assign y=4/>
#{x; M2} <#-- 2.58 -->
#{y; M2} <#-- 4 -->
#{x; m1} <#-- 2.6 -->
#{y; m1} <#-- 4.0 -->
#{x; m1M2} <#-- 2.58 -->
#{y; m1M2} <#-- 4.0 -->
20.用户定义指令:宏
<#macro greet person>
<font size="+2">Hello ${person}!</font>
</#macro>
作为用户定义指令使用宏变量时,使用@替代FTL标记中的#
<@greet person="Fred"/> and <@greet person="Batman"/>
输出为:Hello Fred! and Hello Batman!
21: 宏可以有多参数:
<#macro greet person color>
<font size="+2" color="${color}">Hello ${person}!</font>
</#macro
可以这样使用该宏变量:
<@greet person="Fred" color="black"/> , 其中参数的次序是无关的,只能使用在macro指令中定义的参数,并且对所有参数赋值,所以下面的代码是错误的:
只能使用在macro指令中定义的参数,并且对所有参数赋值,多了或者少了都会出错的,完全赋值。如:<@greet person="Fred"/>为错。
可以在定义参数时指定缺省值,
<#macro greet person color="black">
<font size="+2" color="${color}">Hello ${person}!</font>
</#macro>
这样<@greet person="Fred"/>就正确了,宏的参数是局部变量,只能在宏定义中有效。
22. 嵌套内容
用户定义指令可以有嵌套内容,使用<#nested>指令执行指令开始和结束标记之间的模板片
<#macro border>
<table border=4 cellspacing=0 cellpadding=4><tr><td>
<#nested>
</tr></td></table>
</#macro>
这样使用该宏变量:
<@border>The bordered text</@border>
输出结果:
<table border=4 cellspacing=0 cellpadding=4><tr><td>
The bordered text
</tr></td></table>
<#if indexL_has_next>
freemaker基础语法的更多相关文章
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- iOS-----正则表达式的基础语法
正则表达式简单语法总结 一.什么是正则表达式 从概念上来说,正则表达式也是一门小巧而精炼的语言,它可以用来简化检索特定的字符串,替换特定字符等功能,有许多开发语言工具,都内嵌支持正则表达式.那么一个正 ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- emmet 系列(1)基础语法
emmet 系列(1)基础语法 emmet 是一个能显著提升开发html和css开发效率的web开发者工具 emmet基本上目前已知的编辑器都有相应的插件,各个编辑器的emmet插件的下载地址:点我下 ...
- Scala基础语法 (一)
如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法. Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 我 ...
- Java基础语法
java基础学习总结——基础语法1 一.标识符
- javascript中正则表达式的基础语法
× 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...
- Swift基础语法学习总结(转)
Swift基础语法学习总结 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...
- 黑马程序员——OC语言基础语法 面向对象的思想
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...
随机推荐
- JMeter--使用HTTP信息头管理器
使用HTTP信息头管理,可以帮助测试人员设定JMeter发送的HTTP请求头所包含的信息.HTTP信息头中包含有”User-Agent".“Pragma".”Referer&quo ...
- Mac 平台安装 Android Studio 集成 Android SDK
最近写个小工具,给周边一些朋友用用(类似任务执行),一开始 任务执行用Python写的,部署在云端,有一些局限(资金开销):现准备写一个任务端,需要用到的人直接装个客户端就行,于是准备写个客户端版本的 ...
- js正则表达式30分钟入门教程
2011-10-27 13:23:15 如何使用本教程 最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门——除非你是超人 :) 别被下面那些复杂的表达式吓倒,只要 ...
- ubuntu 安装时分辨率太小 导致无法继续安装
当分辨率是800 *600时,底部的按钮无法显示,不能继续安装. 可以在右上角,点击电源按钮,在系统设置中调整显示的分辨率后,继续安装.
- 知识点查缺补漏贴03:单机最大进程数,线程数和Socket连接数
前言: 参加Unix/Linux相关高级研发职位时,是否经常会被文档,单机允许最大进程数.线程数和Socket连接数,而你却感到束手无措呢?本文给你一个最为详细的答案. 一.最大进程数 运行Linux ...
- ASP.NET Web Pages:帮助器
ylbtech-.Net-ASP.NET Web Pages:帮助器 1.返回顶部 1. ASP.NET Web Pages - 帮助器 Web 帮助器大大简化了 Web 开发和常见的编程任务. AS ...
- python 简单的单例模式日志模块
# -*- coding: utf-8 -*-import logging def singleton(cls): instance = {} def _singleton(*args, **kw): ...
- ie6 双边距问题
div 设置float和margin margin在float方向上会变成设置值的两倍 解决方法,加上css _display:inline
- 单例模式(Singleton)
单例模式 Singletonn Pattern Ensure a class has only one instance, and provide a global point of access ...
- RouterOS 5.16软路由安装图解教程
说明:RouterOS是一种路由器操作系统,它可以安装到普通的个人电脑上面,替代硬件路由器 RouterOS版本:RouterOS 5.16 硬件要求: 1.支持多核CPU 2.内存最大支持到2G 3 ...