Velocity简介
Velocity是一个基于Java的模板引擎(template engine)。它可以让视图的设计者在web页面中引用Java代码中定义的数据对象和命令,从而使Web designers和Java开发者依照MVC思想(Model-View-Controller)开发系统,这意味着Web designers只需将精力用在视图外观设计,而Java程序员则只要关心如何写出高效简洁的Java对象以及实现业务逻辑,Velocity会将他们组装到一起。
velocity模板语言(VTL)
- VTL声明:所有的VTL Statement都是以#开头,且包含一个指示符。
- VTL注释:单行注释以##开头的一行文字,如要多行注释,将它们放入#*和*#之间。
- VTL引用:变量引用(variables)、属性引用(properties)、命令引用(methods),使用符号$。 注意:模板中引用必须是通过Java Bean中的getter/setter实现的,而直接的java对象的数据域是不能直接引用的,如$foo.Name会解析到class Foo‘s getName()的实例方法,但不会解析到Foos类的public Name这个实例变量。
- VTL指令(directives):模板设计者使用“引用”生成动态内容,指令——简单的说就是设计者在模板中操作Java对象,让视图设计者全部控制输出内容的格式。指令总是以#开头后面紧跟具体的指令符。
- Velocity使用==来做比较
- Velocity应用程序,流程分以下几步:
- 初始化Velocity
- 创建context对象
- 添加数据到context
- 选择模板
- 合并模板和数据,产生输出页面
在Solr中使用Velocity返回搜索结果
在Solr中可以以多种方式返回搜索结果,如单纯的文本(XML、JSON、CSV等),也可以将返回Velocity,js等格式。VelocityResponseWriter用于返回Velocity类型文本。Solr的RequestHandler /browse,就使用了VelocityResponseWriter。在solrconfig.xml文件中配置如下:
explicit velocity browse layout EMPE
关于Velocity这个writer的定义如下:
Solr下载文件中,自带的browse模板连接:
Velocity模板依赖的Jar包,在Solr下载包中的位置为:<lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />
在solrconfig.xml的同级目录下的velocity文件夹中,包含Velocity相关的文件。
参考资料:
https://cwiki.apache.org/confluence/display/solr/Velocity+Response+Writer