javaWeb应用开发之velocity模板使用

所需积分/C币:50 2018-08-28 16:13:44 4.82MB PDF
35
收藏 收藏
举报

velociy模板引擎介绍,使用example,demo。开发教程。
#字符后紧跟一个 directive:set时,这个 set directive使用一个表达式(使 用括号封闭) 个方程式分配一个值给变量。变量被列在左边,而它的值被 列在右边,最后他们之间使用=号分割。 在上面的例子中,变量是$a,而它的值是 Velocity。和其他的 references一样 以$字符开始,而值总是以双引号封闭。 Velocity中仅有 String可以被赋值给 变量。 记住以下的规则 使用$字符开始的 references用于得到什么;使用#字符开始的 directives用于作些什么 2EE培训之 Velocity三 发表于2008年05月05日星期 !-[f! supportLists]-→>五、<-[ endif]->Helo Velocity World! 旦某个变量被分配了一个值,那么你就可以在HTML文件的任何地方引用它。 在下面的例子中,一个值被分配给$oo变量,并在其后被引用。 oody> #set(sfoo= Velocity”) Hello Shoo World <html> 上面的实现结果是在页面上打印“ Hello Velocity World!” 为了使包含 Vtl directives的 statement更具有可读性,我们鼓励你在新行开始每 个 VTL statement,尽管你不是必须这么作。 Set directive将在后面详细描述。 <if IsupportLists]->六、<-endf->注释 单行注释 #if This is a single line comment 多行注释: Thus begins a multi-line comment, Online visitors wont see this text because the Velocity Templating Engine will Ignore it # 文档格式: 水率 This is a vtl comment block and may be used to store such information as the document author and versioning information: @version 5 aauthor # <![if! supportLists]-→>七、 <l-[endif]->References 在VTL中有三种类型的 references:变量 variables)、属性( properties)、方法 ( methods)。作为一个使用VTL的页面设计者,你和你的工程师必须就 references 的名称达成共识,以使你可以在你的 template中使用它们。 Everything coming to and from a reference被作为一个 String对象处理。如果有 个对象Sfoo是一个 Integer对象,那么 elocity将调用它的 tostring方法将这个 对象转型为 String类型。 <!-[if! supportLists}->1、<!- endif->变量 格式要求同java !-[if! supportLists]->2、<!-[ endif]->属性 例子 Customer Address purchase. Total Customer. Address有两种含义。它可以表示:查找 hashtable对象 customer 中以 Address为关键字的值;也可以表示调用 customer对象的 getAddresso 方法。当你的页面被请求时,Ⅴ elocity将确定以上两种方式选用那种,然后 返回适当的值。 <-[if! supportlists]->3、<!-[ endif]->方法 一个方法就是被定义在java中的一段代码,并且它有完成某些有用工作的能 力,例如一个执行计算和判断条件是否成立、满足等。方法是一个由S开始 并跟随ⅤTL标识符组成的 References,一般还包括一个VTL方法体。例如 Customer, get Address Purchase. getTotalo Spage set Title(“ My Home Page”) Sperson. setAttributes( [ Strange","Weird, ""Excited"]) 前两个例子 Customer get Address和 Purchase. gettotal)看起来挺想上面的 属性$ customer address和 Purchase. Total。如果你觉得他们之间有某种联系 的话,那你是正确的。 VTL属性可以作为VTL方法的缩写。 Customer: Address属性和使用 Customer get Address方法具有相同的效果。如果可能的话使用属性的方式 是比较合理的。属性和方法的不同点在于你能够给一个方法指定一个参数列 表 <!-[if! supportLists]->八、<-[ endif]-→>正式 reference标记 reference的正是格式如下 S{ mudslinger}变量 S{ customer Address)属性 S{ purchase getTotal(}方法 非正是格式更见常用,但是有时还是使用正是格式比较适合。例如;你希望通过 个变量$vce来动态的组织一个字符串。 Jack is a svicemaniac 本来变量是 Vice现在却变成了 Svicemaniac,这样 Veloctiy就不知道您到底要什 么了。所以,应该使用正是格式书写 Jack is a $vice maniac 现在 Velocity知道变量是svce而不是 Svicemaniac 」2EE培训之 Velocity四 发表于2008年05月05日星期 <l-[if IsupportLists]-> <l-[endif]->Quiet reference notation 例如 <input type=text "name=email"value="Semail"/> 当页面的form被初始加载时,变量 Semail还没有值,这时你肯定是希望它能够 显示一个 blank text来代替输岀 Semail'这样的字段。那么使用 quiet reference notation就比较合适 <input type="text"name="email"value="S!email> 这样文木框的初始值就不会是 email而是空值了。 正式和 quiet格式的 reference notation也可一同使用,像下面这样 <input type="text "name=email"value="S!email;" 7> if! supportLists]->十、<- endif]-> Getting literal Ⅴ elocity使用特殊字符S和#来帮助它工作,所以如果要在 template里使用这些特 殊字符要格外小心。本节将讨论$字符 <!-[if! supportLists]->1、<!-[ endif]->货币字符 在VTL中使用$2.5这样的货币标识是没有问题得的,VTL不会将它错认为 是一个 reference,因为VTL中的 reference总是以一个大写或者小写的字母 开始。 <l-[if IsupportLists]->2, <[]->Escaping valid VTL reference VTL中使用“”作为逃逸符 例如: #set( Semail=“foo”) Semail Semail ISmail A\Semail 将 render为 cmaI Foo ISmail 如果emai变量没有被定义则 emaI ISmail \Semail ASemail 将被 render为 emal Semail \ Semail A\\Semail 注意:VTL中未被定义的变量将被认为是一个字符串,所以以下例子: #set($foo=“ gibbous”) Moon= soo 的输出结果是: Moon= gibbous 十 lendif]-->Case substitution 现在你已经对 reference比较熟悉了,你可以将他们高效的应用于你的 template 。 Velocity利用了很多java规范以方便了设计人员的使用。例如: Shoo Sfoo. get BarO) #if is the same as Sfoo Bar Sdata, getuser(ijon”) ##f is the same as Sdata, User(ijon”) Sdata get Request( get Server NameO f is the same as Sdata Request ServerName #t is the same as S data Request ServerName) 但是,注意VIL中不会将 reference解释为对象的实例变量。例如:$too,Name将被解释为 Foo对象的 getName()方法,而不是Foo对象的Name实例变量。 」2EE培训之 Velocity五 发表于2008年05月05日星期一 <H-[if isupportLists]->+ <l-[endif]-->Directives Reference允许设计者使用动态的内容,而 directive使得你可以应用java代码来 控制你的显示逻辑,从而达到你所期望的显示效果 <l-[if IsupportLists->1, <I-lendif]-->#set # set directive被用于设置一个 reference的值。例如: #set( Primate=""monkey") #set( Customer. Behavior Primate 赋值左侧的(LHS)必须是一个变量或者属性 reference。右侧(RHS)可以 是以下类型中一种: <!--[if! supportlists]->·<!--[endi∫->变量 reference <!--[if supportLists]-->.!-[endif]-->String literal !-[if! supportlists]-->·<!--[ endif]->属性 reference !--[if! supportLists]->·<!--[ endif]->方法 reference <!--Lif !supportLists]-->o<!--Lendif]-->number literal <I--Lif I supportLists]-->0<!--Lendif]-->ArrayList 下面是应用各种类型的RHS的例子: #set( Monkey=Sbll)排变量 reference t set( Monkey. Friend="monica")##String literal #f set( Monkey. Blame =Whitehouse. Leak )##iatE: reference set( Monkey. Plan-Sspindoctor weave(Sweb))## ijit reference t set( Monkey Number=123 )## Number literal #set($ monkey.Say=[Not”,$my,“ fault”])# ArrayList 注意:最后一个例子的取值方法为: Monkey Say.get(0) RHS也可以是一个简单的算术表达式 #set( Svalue=Sfoo +1) fset( Svalue= bar-1) #set( Svalue= Soo* Sbar #set(Svalue=$foo /$bar 如果你的RHS是一个nu,VTL的处理将比较特殊:它将指向一个已经存 在的 reference,这对初学者来讲可能是比较费解的。例如: #set( Reset= Query. criteria(“ name”)) The result of the first query is Result #set( Sresut=Query criteria("address)) The result of the second query is Result 如果 Query. criteria(“iame)返回一个“bi”,而 Query, criteria(“ address")返回 的是mu,则显示的结果如下 The result of the first query is bill The result of the first query is bill

...展开详情
试读 109P javaWeb应用开发之velocity模板使用
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
  • 分享宗师

    成功上传21个资源即可获取
关注 私信 TA的资源
上传资源赚积分or赚钱
    最新推荐
    javaWeb应用开发之velocity模板使用 50积分/C币 立即下载
    1/109
    javaWeb应用开发之velocity模板使用第1页
    javaWeb应用开发之velocity模板使用第2页
    javaWeb应用开发之velocity模板使用第3页
    javaWeb应用开发之velocity模板使用第4页
    javaWeb应用开发之velocity模板使用第5页
    javaWeb应用开发之velocity模板使用第6页
    javaWeb应用开发之velocity模板使用第7页
    javaWeb应用开发之velocity模板使用第8页
    javaWeb应用开发之velocity模板使用第9页
    javaWeb应用开发之velocity模板使用第10页
    javaWeb应用开发之velocity模板使用第11页
    javaWeb应用开发之velocity模板使用第12页
    javaWeb应用开发之velocity模板使用第13页
    javaWeb应用开发之velocity模板使用第14页
    javaWeb应用开发之velocity模板使用第15页
    javaWeb应用开发之velocity模板使用第16页
    javaWeb应用开发之velocity模板使用第17页
    javaWeb应用开发之velocity模板使用第18页
    javaWeb应用开发之velocity模板使用第19页
    javaWeb应用开发之velocity模板使用第20页

    试读结束, 可继续阅读

    50积分/C币 立即下载 >