Velocity

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应用程序,流程分以下几步:
  1. 初始化Velocity
  2. 创建context对象
  3. 添加数据到context
  4. 选择模板
  5. 合并模板和数据,产生输出页面

在Solr中使用Velocity返回搜索结果

在Solr中可以以多种方式返回搜索结果,如单纯的文本(XML、JSON、CSV等),也可以将返回Velocity,js等格式。VelocityResponseWriter用于返回Velocity类型文本。Solr的RequestHandler  /browse,就使用了VelocityResponseWriter。在solrconfig.xml文件中配置如下:

 <requestHandler name="/browse" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="echoParams">explicit</str>

       <!-- VelocityResponseWriter settings -->
       <str name="wt">velocity</str>
       <str name="v.template">browse</str>  <!--定义到文件browse.vm,省略了后缀名vm,v.template中的内容将作为$content的内容-->
       <str name="v.layout">layout</str>
       <str name="title">EMPE</str>
  </requestHandler>

关于Velocity这个writer的定义如下:

 <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" startup="lazy"/> 

Solr下载文件中,自带的browse模板连接:http://localhost:8983/solr/techproducts/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

posted @ 2016-08-05 11:38  saratearing  阅读(360)  评论(0编辑  收藏  举报