vm模板引擎

vm模板引擎

一 vm 是什么 ?

vm是一种页面的格式,全称是velocity model ,velocity 模板的意思,针对我们目前的项目可以看到处理的格式是这样的,请求地址是htm,指令是action,参数是&拼接的,而返回地址的页面是*.vm,经过velocityviewservlet 转换就可以吧模板文件进行merge变成可读的页面文件,通过response返回给界面。
而servlet拓展除了各种请求的模板方式,包括.do,.action ,而对应的页面的形式有jsp,php,asp,所以需要注意的是静态的html文件是可以直接打开的,而动态的必须是在服务器环境下才可以打开,要通过引擎处理优化输出html格式的才可以。

二 vm怎么用 ?

vm是基于java的模板引擎,可以吧java定义返回的对象,字符串,属性直接以相应的模式解析出来,加载在标签中。所以相应的方法只要按照属性获取,列表循环获取即可。

三 常用的vm的语法有什么 ?

而针对复杂的逻辑,一般的语法是解决不了所有问题的,那么vm为我们准备了哪些常用语法呢?
###1 设置变量 所有的变量默认按照字符串的形式获取
#set ($count='是的')
vm是弱类型的变量,但是要注意一下几点,
vm中的字符串将会被重新解析 特别是$命名的
vm变量的命名是一个大小写的字母开始的,所以货币符号的使用是没有问题的
正确的使用变量的方法是${var} 而$var 也是可以获取的,但是实现无缝拼接的时候,需要区分
获取属性的时候,属性加在{}里面
变量可以使变量引用,字符串,数字,属性引用,方法引用,数组列表

#set( $monkey = $bill ) ## variable reference
#set( $monkey.Friend = "monica" ) ## string
#set( $monkey.Blame = $whitehouse.Leak ) ## property reference
#set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference
#set( $monkey.Number = 123 ) ##number
#set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList

vm中的属性不会识别为属性变量,而是识别为属性方法

2 循环

#foreach($l in $list)
 $l  可以是一个具体的字符串,也可能是一个对象,继续读取属性方法 ($l.attr)
#end

循环的长度 $!list.size()==0
另外 需要注意的是 $! 是判断对象是否存在的方法 如果存在 显示 如果不存在 不显示 为false

3 条件判断

#if(condition)
#elseif(condition)
#else
#end

条件开始判断 只要一个开始 一个结束语法 而且是就近匹配 注意与循环的嵌套使用

###4 注释 一般情况下 为了更好的理解你的页面语法 需要一定的注释语句

单行注释 ##
多行注释 #* #
文档注释 #
* **#

5 逻辑运算

&& || !
真或 以及假或的使用

6 宏的使用

也就是vm语法的函数,定义函数

#macro(宏的名称 $参数1 $参数2 …)
   语句体(即函数体)
#end

使用函数,注意的是 参数之间空格隔开

#宏的名称($参数1 $参数2 …)

7 引入文件

#include #parse 分别用于引入文件 ,一个适用于多个 ,一个适用于单个

###8 内置对象
$request、$response、$session,另外,模板内还可以使用 $msg内的消息工具访问 Struts 的国际化资源,达到简便实现国际化的方法。

###9 一些零碎的知识点 ,不在描述
例如 #stop 停止模板的渲染 ,\ 用于转义 等等,语法嵌套使用

四 vm 的页面模板如何快速应用?

  1. eclipse设置vm文档关联步骤 :
    打开Eclipse ---》window----》preference -----》Content type-----》Text----》Html -----》Add ------》
  2. 项目配置
    首先需要配置的是Velocity引擎自己。要做到这点,可以通过以下方式在Spring配置文件中声明一个VelocityConfigurer Bean:
<bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
    <property name="resourceLoaderPath">
      <value>WEB-INF/velocity/</value>
    </property>
    </bean>

VelocityConfigurer负责在Spring中设置Velocity引擎。这里,我们通过属性resourceLoaderPath告诉Velocity到哪里寻找它的模板。我们建议将模板放到WEB-INF的某个子目录下面,这样可以保证这些模板不能被直接访问。也可以通过velocityProperties属性来设置其他Velocity的配置细节。例如下面的VelocityConfigurer配置:

<bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
    <property name="resourceLoaderPath">
      <value>WEB-INF/velocity/</value>
    </property>
    <property name="velocityProperties">
      <props>
        <prop key="directive.foreach.counter.name">loopCounter</prop>
        <prop key="directive.foreach.counter.initial.value">0</prop>
      </props>
    </property>
</bean>

<bean id= "velocityConfigurer"
class= "org.springframework.web.servlet.view.velocity.VelocityConfigurer" >
 <property name= "resourceLoaderPath">
 		<value> /WEB-INF/view/</value >
 </property>
 <property name= "velocityProperties">
 <props>
     <prop key= "input.encoding">UTF-8</prop >
     <prop key= "output.encoding">UTF-8</prop >
 </props>
 </property>
</bean>

from: https://www.kancloud.cn/eagles/codingrules/303659 

猜你喜欢

转载自blog.csdn.net/GarfieldEr007/article/details/84962609