项目中经常用到的 .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. 如何在Asp.Net中使用JQueryEasyUI

    JQueryEasyUI的基本信息: 官方下载 官方演示 官方文档 一.jQuery easyUI下载后解压的文件目录如下图: demo:JQueryEasyUI的一些示例页面,在项目使用可以将该目录 ...

  2. vue 路由元信息

    官方文档:路由meta元信息 前言: 在设置面包屑导航还有菜单栏的时候,路由的meta字段可以自定义我们需要的信息,然后路由跳转的时候,提供我们判断条件 文档: 定义路由的时候可以配置 meta 字段 ...

  3. UVA - 11374 - Airport Express(堆优化Dijkstra)

    Problem    UVA - 11374 - Airport Express Time Limit: 1000 mSec Problem Description In a small city c ...

  4. Spring Cloud:Security OAuth2 自定义异常响应

    对于客户端开发或者网站开发而言,调用接口返回有统一的响应体,可以针对性的设计界面,代码结构更加清晰,层次也更加分明. 默认异常响应 在使用 Spring Security Oauth2 登录和鉴权失败 ...

  5. 《PyQt5快速开发与实战了》正式发售 !!!

    <PyQt5快速开发与实战>正式出售了,该书是国内第一本介绍PyQt5的书籍.是两位一线工程师耗费一年的心血.本书github网址:https://github.com/cxinping/ ...

  6. 聊聊计算机中的编码(Unicode,GBK,ASCII,utf8,utf16,ISO8859-1等)以及乱码问题的解决办法

    作为一个程序员,一个中国的程序员,想来“乱码”问题基本上都遇到过,也为之头疼过.出现乱码问题的根本原因是编码与解码使用了不同而且不兼容的“标准”,在国内一般出现在中文的编解码过程中. 我们平时常见的编 ...

  7. Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参

    继续学习 最近一直在使用Asp.Net Core SignalR(下面成SignalR Core)为小程序提供websocket支持,前端时间也发了一个学习笔记,在使用过程中稍微看了下它的源码,不得不 ...

  8. Xshell 连接Linux服务器自动中断问题

    Xshell连接上Linux服务器后经常自动中断连接,报错如下图: 解决方法如下,进入/etc/ssh目录打开sshd_config文件,找到下图两个参数并设置下图所示的值: 重启sshd即可解决,如 ...

  9. Static Sushi AtCoder - 4118 (技巧枚举)

    Problem Statement "Teishi-zushi", a Japanese restaurant, is a plain restaurant with only o ...

  10. Crypto加密解密

    crypto 模块提供了加密功能,包含对 OpenSSL 的哈希.HMAC.加密.解密.签名.以及验证功能的一整套封装.我们这里讲crypto AES算法加密 一.使用步骤 1.引入Crypto 1. ...