项目中经常用到的 .vm 后缀文件是什么?
基于 java 的 velocity 模版引擎的一种页面控制文件,是一些类似 html 语句和一种叫 VLT 的语句构成
 
velocity --美 [vəˈlɑ:səti]
速率,速度;周转率;高速,快速
velocity 是一种基于 java 的模版引擎,允许任何人仅仅简单的使用模版语言来引用由 java 代码定义的对象。
 
 
.vm 文件中 velocity 的常用语法

一。基本语法

1.“#”用来标识 velocity 的脚本语句,包括: #set. #if . #else. #end. #foreach. #end . #iinclude. #parse. #macro 等
例如:
#if ($info.imgs)
<img src="$info.imgs" border=0>
#else
<img src="noPhote.jpg">
#end
2."$"用来标识一个对象(或理解为变量);
如: $i; $msg  $TagUtil.options(...) 等
3.“{ }”用来明确标识 velocity 变量
比如在页面中,页面汇总有一个 $someonename, 此时, velocity 将把 somoonename 作为变量名,
若我们程序是想在 someone 这个变量的后面紧接着显示 name 字符,则上面的标签应该为 ${someone} name
4.“!”用来强制把不存在的变量显示为空白
如当页面中包含 $msg, 如果 msg 对象有值,将显示 msg 的值,如果不存在 msg 对象,则在页面中将显示 $msg 字符。
为了把不存在的变量或变量值为 null 的对象显示为空白,则只需要在变量名前加一个"!"号即可。 如 $!msg
 

二。在 EasyJWeb 中的最佳实践

理论上可以在 EasyJWeb 模版中使用所有的 velocity 的脚本及功能,但是不推荐在界面模版中使用过多过复杂的脚本表达方式,
尽量不要在界面模版中加入任何复杂的逻辑,更不要在界面模版中加入变量声明,逻辑运算符等
提供了5条基本的模版脚本语句,模版语句很简单,可以直接由界面设计人员来添加
  1.  $!obj 直接返回对象结果
如:在 html 标签中显示 java 对象 msg 的值。 <p>$!msg</p>,
在 html 标签中显示经过 HtmlUtil 对象处理过后的 msg 对象的值  <p>$!HtmlUtil.doSomething($!msg)</p>
 
  1. #if($!obj) #else  #end  判断语句
如:在EasyJWeb 各种开源应用中,我们经常看到的用于弹出提示信息 msg 的例子
#if($msg)
<script>
alert('$!msg');
</script>
#end
脚本表示:当对象 msg 对象存在时,输出 <script> 的内容
#if, #elseif  #else
 
  1. #foreach( $info in $list )  $info.someList   #end
是 velocity 中唯一的一种巡皇的语法,类似于 java 的增强 for 循环
java  的  for  循环是: for(User  user:userList){}
velocity 的 foreach 循环是:   #foreach( $user  in  $userList )....#end
这里的 userList 是一个 List 。可以使用  $foreach.count 进行简单的循环技术
如果想从零开始进行 #foreach 循环,可以使用  foreach.index  代替 foreach.count
判断是否是最后一次迭代:  #if( $foreach.hasNext )
如果你的 userList 中有很多数据,但是你只想遍历前3条,那么:
#foreach( $user  in $userList )
#if( $foreach.count > 3 )
#break
#else
...
#end
#end
在 #foreach 中昌盛的变量,只在 #foreach 的作用范围内有效
 
循环读取集合 list  中的对象,并作相应的处理
如: EasyJF  开源论坛系统中论坛首页显示热门主题的 html  界面模版脚本:
#foreach ( $info in $hotList1 )
<a href="/bbsdoc.ejf?easyJWebCommand=show&&cid=$!info.cid"  target="_blank">$!info.title</a><br>
#end
脚本表示循环遍历  hotList1 集合中的对象,并输出对象的相关内容
 
  1. #macro( macroName ) #end  脚本函数(宏)调用,不推荐在界面模版中大量使用
如:在使用 EasyJWeb  Tools  快速生成的添删改查示例中,可以点击列表的标题栏进行升降排序显示,
这是我们在 EasyJWeb 应用中经常看到的一个排序状态显示的模板内容
函数(宏)定义,一般放在最前面
#macro( orderPic $type )
#if( $orderField.equals( $type ) )
<img src="http://images.cnblogs.com/ico/${orderType}.gif">
#end
#end
具体的调用如:<font color="#ffffff">头衔 #orderPic("title")</font>
 
  1. 包含文件 #include("模版文件名")  或  #parse ("模版文件名")
主要用于处理居右相同内容的页面,比如每个网站的顶部或尾部内容
使用方法。
parse  和  include 的区别在于
#parse 导入脚本  #parse("head.vm");---一次只能引入一个文件(或变量),包含的文件中有 velocity 脚本标签
#include (  "one.gif", "two.text","three.html" )--包含文件,可以同时引入多个文件。不能被模版引擎处理。
 
  1. #set 语法
可以创建一个 velocity 变量,一般用于向一个变量或属性赋值。 #set 表达式,结尾不需要 #end  跟谁。其他的表达式基本上都需要加 #end
如:#set($pactive = "active")
 
velocity  用户指南,中文翻译链接  http://ifeve.com/apache-velocity-dev/
apcche veloctiy 官网用户指南: http://velocity.apache.org/engine/devel/user-guide.html#The_Mud_Store_Example
 

velocity 新手用小常识--开源,简单易上手的更多相关文章

  1. 简单易上手的Bootstrap

    什么是Bootstrap? Bootstrap是一个web框架.Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT ...

  2. 来来来,告诉你一个简单易上手的KPI打分的方子

    ▋1/3 前言 每个企业都要定期为员工的工作来进行考核,有月度考核.季度考核和年度考核. 这次月度考核,我打算用一种新的方式来执行. 我在我们研发小组内曾分享过能力-意愿四象限图.根据岗位技术能力和工 ...

  3. 手撸一个SpringBoot的Starter,简单易上手

    前言:今天介绍一SpringBoot的Starter,并手写一个自己的Starter,在SpringBoot项目中,有各种的Starter提供给开发者使用,Starter则提供各种API,这样使开发S ...

  4. 推荐一些不错的开源免费易上手的web前端框架

    1. bui 2.Semantic UI 3.oniui

  5. 一个简单易上手的短信服务Spring Boot Starter

    前言 短信服务在用户注册.登录.找回密码等相关操作中,可以让用户使用更加便捷,越来越多的公司都采用短信验证的方式让用户进行操作,从而提高用户的实用性. Spring Boot Starter 由于 S ...

  6. mapreduce 倒序 排序 最简单 易上手

    对于mapreduce倒序只需要建立一个类,然后继承WritableComparator 在重写 Compare函数最后在main里调用一下,就可以实现倒序排序: 代码: public static ...

  7. 【专题教程第8期】基于emWin模拟器的USB BULK上位机开发,仅需C即可,简单易实现

    说明:1.如果你会emWin话的,就可以轻松制作上位机.做些通信和控制类上位机,比使用C#之类的方便程度一点不差,而且你仅会C语言就可以.2.并且成功将emWin人性化,可以做些Windows系统上的 ...

  8. 开源丨CloudBase CMS 内容管理系统!简单易用企业内容管理流

    背景 云开发CloudBase CMS 是云开发推出的一站式云端内容管理系统,助力企业的数据运营管理工作. 开发者可以直接在云开发扩展能力中一键安装 CloudBase CMS,免费使用 CloudB ...

  9. 分享一个简单易用的RPC开源项目—Tatala

    http://zijan.iteye.com/blog/2041894 这个项目最早(2008年)是用于一个网络游戏的Cache Server,以及一个电子商务的Web Session服务.后来不断增 ...

随机推荐

  1. c#实验一:基于winform的冒泡排序练习

    一.界面设计 在排序前textbox中输入数字,以逗号隔开,通过两个button实现降序排序或升序排序,然后在排序后textbox中显示 三个关键点: 1.监测输入是否合法,最好使用正则表达式 2.拆 ...

  2. linux 配置vim(vimrc)

    打开终端:ctrl+alt+t 进入vim文件:cd /etc/vim 打开vimrc文件:sudo gedit vimrc 然后在行末if语句前加上下面的内容,"  这个符号为注释,后面内 ...

  3. Ambari——大数据平台的搭建利器之进阶篇

    前言 本文适合已经初步了解 Ambari 的读者.对 Ambari 的基础知识,以及 Ambari 的安装步骤还不清楚的读者,可以先阅读基础篇文章<Ambari——大数据平台的搭建利器>. ...

  4. Configuring Apache Kafka for Performance and Resource Management

    Apache Kafka is optimized for small messages. According to benchmarks, the best performance occurs w ...

  5. 【转】VUE 爬坑之旅-- 如何对公共JS,CSS进行统一管理,全局调用

    原文:https://blog.csdn.net/zgh0711/article/details/78664262 vue 中,将页面分为了各个组件,我们写好组件,就可以将这个组件运用到其他各个页面中 ...

  6. Loj #3056. 「HNOI2019」多边形

    Loj #3056. 「HNOI2019」多边形 小 R 与小 W 在玩游戏. 他们有一个边数为 \(n\) 的凸多边形,其顶点沿逆时针方向标号依次为 \(1,2,3, \ldots , n\).最开 ...

  7. MySQL之记录相关操作

    一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...

  8. 第三章 启动rabbitmq的webUI

    一.启动步骤 1.启动rabbitmq rabbitmq-server (前台启动)或者rabbitmq-server -detached(后台启动) 2.启动rabbitmq_management ...

  9. 分治FFT的三种含义

    分治FFT是几个算法的统称.它们之间并无关联. 分治多项式乘法 问题如求\(\prod_{i=1}^na_ix+b\). 若挨个乘复杂度为\(O(n^2\log n)\),可分治做这件事,复杂度为\( ...

  10. springboot打成jar后文件读取问题

    springboot打成的jar包里面不能用File去获取文件对象,只能用流的方式去读取. 获取方式: InputStream resourceAsStream  = 类名.class.getClas ...