vc模版插件使用手册.docx
《vc模版插件使用手册.docx》由会员分享,可在线阅读,更多相关《vc模版插件使用手册.docx(41页珍藏版)》请在冰豆网上搜索。
vc模版插件使用手册
模板插件使用方法
模板语言介绍
在《后台管理系统》中使用apache的velocity第三方软件,velocity本身定义了一套模板语言,并对提供了解析功能。
在源文件、模板中都可以使用velocity定义的模板语言,一般的情况下,我们只会使用其中一小部分常用功能就可以了。
具体的情况可以看附录。
Velocity常用的语法
在MaxPoral.PAS中常用的Velocity语法有
类型
说明范例
变量
变量的格式:
$VTL标识符
VTL标识符以字母开始,由字母、数字、横划线(-)或下划线(_)组成。
变量或者从模板中的set指令获得值,或者Java代码(同名变量)中获得值。
Velocity只处理已定义的变量引用,对于没有定义的变量引用,Velocity原样返回。
#set($foo="gibbous")
$moon=$foo
正式引用符号{}
正式引用符号在使用变量引用含糊的地方进行区分
#set($vice="klepto")
Jackisa${vice}maniac.
注释
单行注释(以##开始)和多行注释(包括在#*和*#之间)
##Thistextisnotvisible.
属性
格式:
$VTL标识符.VTL标识符
$customer.Address
$purchase.Total
方法
格式:
$VTL标识符(参数列表)
$customer.getAddress()
$purchase.getTotal()
$page.setTitle("MyHomePage")
$person.setAttributes(["Strange","Weird","Excited"])
特殊字符转义
对于$、#等特殊字符要正常显示,可以使用\进行转义,\\转义为\。
#set($email="foo")
$email
\$email
\\$email
\\\$email
输出结果是:
foo
$email
\foo
\$email
#set
格式:
#set(LHS=RHS)
●LHS可以是变量引用或属性引用
●RHS可以是引用、字符串、数字、ArrayList或Map
#set($monkey=$bill)#set($monkey.Friend="monica")
#set($monkey.Blame=$whitehouse.Leak)
#if
#elseif
#else
#end
#if指令在条件成立时,显示#if和#end之间的内容,否则显示#else和#end之间的内容。
#if指令中可以使用的关系和逻辑符号包括:
●<、<=、==、>=、>
●&&(and)、||(or)、!
(not)
#set($testflag=$plugins.var("testflag"))
#if($testflag=="true")
#set($boNews=$plugins.create("bo","news"))
#set($content1=$boNews.fetch("record","newsDetail","56"))
#else
#set($content1=$plugins.var("vo"))
#end
#foreach
#end
遍历集合数据
#foreach($productin$allProducts)
##对$product进行处理
#end
插件介绍
插件采用了模板语言进行定义,使用的方法和遵循模板语言定义。
插件上下文是每个文件对象(源页面、板块、模板)中默认存在的,并且可以直接使用,所有要使用的插件都有它创建。
插件是完成一组特定功能的组件,在页面上以标记存在。
目前系统实现了二种类型的插件:
工具插件和业务插件
⏹工具插件:
◆关键字:
tools
◆功能:
完成构造页面展示
⏹业务插件:
◆关键字:
bo
◆功能:
是关联系统中业务的桥梁,可以取出其中的数据进行展示
插件上下文对象
在创建文件对象(源页面、板块、模板)时,系统中已经存在插件上下文对象,可以直接使用。
插件上下文对象是创建其它插件的工厂,任何插件的构造都有他来创建。
标示名称:
$plugins
方法
方法
说明范例
create
create(插件类型,插件标识符)
创建插件对象
插件类型:
系统定义的插件类型,目前只有tools和bo
插件关键字:
插件的名称
创建一个业务插件,并赋值给$boService变量
#set($boService=$plugins.create("bo","service"))
var
var(变量名称)
取出系统定义的变量
取出系统变量testflag并赋值给$testflag变量
#set($testflag=$plugins.var("testflag"))
url
url(”WEB绝对路径”)
WEB绝对路径:
是指不包括站点名的绝对路径,开始已经是以“/”打头的功能:
转换成相对路径
转换iframe中的src链接
urlIndex
取出索引页面的url。
该方法有两个参数:
参数一:
分类id
参数二:
索引页面的类型关键字,目前只存在业务索引页面,填index_service
例子:
$plugins.urlIndex(“1001”,”index_service”)
链接转换
为了保证系统产生静态文件的通用性,在系统中,链接要使用相对路径。
系统自动会对常见的URL进行链接转换,他们是
●链接(a)
●图像(img)
●背景图像(background)
对少量的的其它地方使用的链接,请使用插件上下文的url方法进行转换
输入规则
说明范例
a
Href必须在标志a的后面,中间保留空格,
Href的内容必须是以”/”开始
系统对这样写的格式进行自动转换
ddd
img
Src必须在标志img的后面,中间保留空格
Src的内容必须是以”/”开始
系统对这样写的格式进行自动转换
background
background=”/…………….”
Background的内容必须是以”/”开始
系统对这样写的格式进行自动转换
其它要转换的地方
$plugins.url(“/…………………..”)
请使用插件上下文中的url方法对需要进行的转换进行强制转换
不需要链接转换
$plugins.s()
对符合自动url转换的地方,如image,a,background,如果里面的链接地址不需要被转换,请使用此方法
则对于url“/portal/a.gif”,系统不会将他转换为相对链接
日期转换
对返回值为日期行的数据,系统可以格式化其显示方式
前提
转换的数据必须为日期对象
●java.util.Date
●java.sql.Timestamp
转换方法
$plugins.formatDate(日期对象,日期格式串)
日期格式串
y年号,如1996
M月份,如July或者07
d月中第几天,如12
H小时(24制),如0、17
m分钟,如32
s钞钟,如55
S微钞,如978
E星期几,如Tuesday
D一年中的第几天,如189
wweekinyear(Number)27
Wweekinmonth(Number)2
aam/pmmarker(Text)PM
khourinday(1~24)(Number)24
Khourinam/pm(0~11)(Number)0
ztimezone(Text)PacificStandardTime
'escapefortext(Delimiter)
''singlequote(Literal)'
空值判断
对于返回值为null的值或对象属性,可以用下列方法进行判断
前提
$car.fuel值为空(null)
1
#if(!
$car.fuel)
2
#if("$!
car.fuel"=="")
3
#if("$car.fuel"=="")
4
#if((!
$car.fuel)&&("$!
car.fuel"==""))只检查null
范例
#set($a1=$content.wwwurl)
#set($a2=(!
$content.wwwurl))
#set($a3=("$content.wwwurl"==""))
#set($a4=("$!
content.wwwurl"==""))
#set($a5=((!
$content.wwwurl)&&("$!
content.wwwurl"=="")))
\$a1=$a1
\$a2=$a2
\$a3=$a3
\$a4=$a4
\$a5=$a5
=====================打印结果=========================
\$a1=$a1因为$a1为空值,所以velocity直接把变量当成字符输出
$a2=true当为空值时,输出true
$a3=false当为空值时,输出false
$a4=true当为空值时,输出true
$a5=true当为空值时,输出true
插件对象使用步骤
第一步:
创建插件对象
步骤
署名
第一步
创建插件对象
系统在使用插件的时候,必须先用插件上下文创建传间对象
如:
创建新闻插件
#set($boNews=$plugins.create("bo","news"))
第二步
Src必须在标志img的后面,中间保留空格
Src的内容必须是以”/”开始
系统对这样写的格式进行自动转换
使用插件对象的方法,并提供参数,取出结果值
如:
#set($content=$boNews.fetch("record","newsDetail","153"))
第三步
对结果值进行展示
输出结果
如:
${content.id}
${content.content}
说明
其中第一、二步是必须的
插件手册
插件公共方法
描述
名称
fetch(参数列表)
说明
取出插件对象/数据
此方法是所有插件对象在构建数据时必须使用的方法
参数列表请参考各个插件的说明
工具插件
引用文件插件
插件描述
插件描述include
说明
引用站点中的源文件、源文件板块、模板文件
类型
tools
插件标识符
include
范例
##创建引用插件
#set($include=$plugins.create("tools","include"))
include.fetch
插件方法说明include。
fetch
方法描述
fetch(文件类型,文件名)
参数一
文件类型:
包括
✧unit文件板块类型
✧file文件类型
✧tp模板类型
参数二
文件名
✧对于文件板块,文件扩展名为.un
✧对于文件类型,文件扩展名为.html
✧对于模板类型,文件扩展名为.vm
范例
##创建引用插件
#set($include=$plugins.create("tools","include"))
##引用板块
$include.fetch("unit","/a1/a22.un")
##引用文件
$include.fetch("file","/dddd.html")
##引用模板
$include.fetch("tp","/test.vm")
引用的限制
引用的限制
源页面
可以引用
✧模板
✧自己的板块
✧源页面
页面板块
可以引用
✧源页面
✧模板
注:
页面板块不能引用板块
模板
可以引用
✧模板
✧源页面:
不推荐使用
范例
范例
##创建引用插件
#set($include=$plugins.create("tools","include"))
##引用板块
$include.fetch("unit","/a1/a22.un")
##引用文件
$include.fetch("file","/dddd.html")
##引用模板
$include.fetch("tp","/test.vm")
索引分页插件
插件描述
插件描述index
说明
根据业务插件取出的数据,按照条件进行分页列表的构造
类型
tools
插件标识符
index
范例
##创建分页插件
#set($index=$plugins.create("tools","index"))
备注
索引插件不能单独使用,必须和业务插件对象配合才能使用
在使用索引分页插件时,必须先创建业务插件对象
限制
●索引插件只能使用在源页面中,不能用在模板和页面板块中
●索引插件只能做为主页面,即其它页面不能include它。
●索引插件可以被iframe
index.runner
插件对象说明index.runner
属性名称
runner
属性描述
绑定的业务插件对象
说明
索引分页插件主要使用此属性进行控制,他把行为转移到控制的业务对象上
index.runner.bind
插件对象方法说明index.runner.bind
方法描述
bind(业务插件对象)
参数一
业务插件对象:
已经创建的业务插件对象
范例
##构造业务对象
#set($boService=$plugins.create("bo","service"))
##构造索引对象
#set($index=$plugins.create("tools","index"))
##绑定对象
$index.runner.bind($boService)
备注
构造索引对象的步骤必须是
1.构造业务插件对象
2.构造索引对象
3.绑定索引对象
index.runner.condition
插件对象方法说明index.runner.condition
方法描述
condition([参数列表])
参数
参数列表:
因为runner把行为转移到绑定的对象上,参数列表一样
具体调用某个业务对象的方法,参数列表就和对应方法的参数列表一样。
所以参数列表请参考对应的业务对象方法的参数列表
范例
##构造业务对象
#set($boService=$plugins.create("bo","service"))
##构造索引对象
#set($index=$plugins.create("tools","index"))
##绑定对象
$index.runner.bind($boService)
##取出某类业务的列表
$index.runner.condition(["list","cate","10,1","2"])
$index.runner.link("news",$content)"
index.runner.link
插件对象方法说明index.runner.condition
方法描述
link([参数列表])
参数
参数列表:
因为runner把行为转移到绑定的对象上,参数列表一样
具体调用某个业务对象的方法,参数列表就和对应方法的参数列表一样。
所以参数列表请参考对应的业务对象方法的参数列表
范例
##构造业务对象
#set($boService=$plugins.create("bo","service"))
##构造索引对象
#set($index=$plugins.create("tools","index"))
##绑定对象
$index.runner.bind($boService)
##取出某类业务的列表
$index.runner.link("业务数据模板名称",$content)"
例如:
$index.runner.link("news_1",$content)"
index.runner.pageName
插件对象方法说明index.runner.pageName
方法描述
pageName(页数)
参数
页数:
在总页数内的页数
返回值
指定页面的文件名称
index.runner属性
属性法说明index.runner
firstName
第一页的页面名称
prevName
上一页的页面名称
nextName
下一页的页面名称
lastName
最后一页的页面名称
pageNo
当前的页数
pageCount
总页数
范例
范例
#set($boService=$plugins.create("bo","service"))
#set($index=$plugins.create("tools","index"))
$index.runner.bind($boService)
$index.runner.condition(["list","cate","2,1","2"])
#set($contentlist=$index.runner.currentData)
#foreach($contentin$contentlist)
${content.icpcode},
${content.servname},
${content.spname}
#end
first
prev
next
last
pageNo:
$index.runner.pageNo
total:
$index.runner.pageCount
thesecondpagename=$index.runner.pageName
(2)
内容分割插件
内容分页插件
描述
方法描述
根据传入的内容及分割的标志将内容分隔多份。
列表类型
record
方法关键字
无
参数一
无
备注
本插件在使用的时候无需声明。
根据新闻中的内容,如果包含分割符(为{%page%}),则将内容分割成多份,页面上显示分割后的页数。
只要插入范例中的代码即可:
范例
#if($plugins.isPageIndexContext())
#foreach($contentsin$plugins.pageIndexPlugIn.arrayUrl)
$velocityCount
#end
#end
PPS资源插件
PPS资源插件
描述
方法描述
根据传入的pps关键字,获取对应的参数。
关键字定义于配置文件System-config.xml中的PPS配置模块。
类型
tools
插件标识符
include
参数一
Stringstr资源的key
备注
com.aspire.ponaadmin.web.plugin.implement.ToolPlugInProxyPPSRes
注册该插件时必须为:
ppsres而且是放在工具插件下。
返回是配置文件中PPS配置模块中对应的数据。
范例
##创建插件
#set($res1=$plugins.create("tools","ppsres"))
##获取PPS配置资源
${res1.fetch("PPSRES","orderURL")}
业务插件
业务插件的公共方法
插件描述
插件描述
说明
调用业务数据的插件
类型
bo
插件标识符
注册的业务插件关键字(插件名称)
如:
news,service
范例
##创建引用插件
#set($boService=$plugins.create("bo","service"))
业务插件的数据分类
对于业务插件对象返回的数据,包括两种形式
✧单记录数据:
关键字record表示
✧列表数据:
关键字list表示
数据分类作为一个必填的,而且还是第一个参数传递给业务插件,定位返回值的类型。
单记录数据方法
单记录数据方法
说明
取出单条记录的方法
方法
fetch("record",方法关键字,参数列表)
参数一
方法关键字
如:
newsDetail取出新闻单条信息
参数二
参数列表
个数有1-n个
请参考每个方法关键字的定义
返回值
业务对象,提供属性供用户使用
具体属性请参考相应的方法
列表数据方法
列表数据方法
说明
取出列表数据的方法
方法
fetch("list",方法关键字,分页参数,参数列表)
参数一
方法关键字
如:
newsList取出新闻列表
参数二
分页参数,格式(每页记录数,第几页)
参数三
参数列表
个数有1-n个
请参考每个方法关键字的定义
返回值
业务对象,提供属性供用户使用
具体属性请参考相应的方法
范例
范例
##单记录范例
#set($content=$boService.fetch("record","service","888888","0000000007"))
$