Velocity响应编写器
VelocityResponseWriter(Velocity响应编写器)是 contrib/velocity 目录中可用的可选插件。当使用诸如 “_default”、“techproducts” 和 “example / files” 等配置时,它为浏览用户界面提供动力。
必须添加它的 JAR 和依赖项(通过<lib>或 solr/home lib 包含),并且必须在 solrconfig.xml 像这样注册:
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter">
<str name="template.base.dir">${velocity.template.base.dir:}</str>
<!--
<str name="init.properties.file">velocity-init.properties</str>
<bool name="params.resource.loader.enabled">true</bool>
<bool name="solr.resource.loader.enabled">false</bool>
<lst name="tools">
<str name="mytool">com.example.MyCustomTool</str>
</lst>
-->
</queryResponseWriter>
以上示例显示了 VelocityResponseWriter 使用的可选的初始化和自定义工具参数;下文详细介绍了这些内容。这些初始化参数仅在 solrconfig.xml 中的编写器注册中指定,而不是作为请求时间参数。请参阅下面的请求时间参数。
配置和使用
VelocityResponseWriter 初始化参数
- template.base.dir
如果指定并作为文件系统目录存在,则将为此目录添加一个文件资源加载程序。此目录中的模板将覆盖 “solr” 资源加载程序模板。
- init.properties.file
指定一个属性文件名,必须存在于 Solr 的
conf/
目录(而不是在velocity/
子目录中)或者 <lib> 的 JAR 文件的根中。
- params.resource.loader.enabled
“params” 资源加载程序允许在 Solr 请求参数中指定模板。例如:
http://localhost:8983/solr/gettingstarted/select?q=\*:*&wt=velocity&v.template=custom&v.template.custom=CUSTOM%3A%20%23core_name
v.template=custom
表示要呈现一个名为“自定义”的模板,其值v.template.custom
是自定义模板。默认情况下为false
;它不常用,需要时启用。 - solr.resource.loader.enabled
“solr” 资源加载程序是默认注册的唯一模板加载程序。模板是由 SolrResourceLoader 从
velocity/
子目录下可见的资源提供的。VelocityResponseWriter 本身有一些内置的模板(在它 JAR 文件中的velocity/
),这些模板可以通过这个加载程序自动使用。当相同的模板名称处于 conf/velocity/ 或使用template.base.dir
选项时,可以覆盖这些内置模板。
- tools
可以将外部“工具”指定为字符串名称/值(工具名称/类别名称)对的列表。Velocity 上下文中的工具只是 Java 对象。工具类是使用无参数构造函数(或者一个单一的 SolrCore-arg 构造函数,如果存在的话)构造的,并以指定名称添加到 Velocity 上下文中。
自定义注册的工具可以重写具有相同名称的内置上下文对象,除了
$request
,$response
,$page
和$debug
(这些工具被设计成不能被重写)。
VelocityResponseWriter请求参数
- v.template
指定要呈现的模板的名称。
- v.layout
指定一个模板名称,用作围绕主
v.template
指定模板的布局。
主模板呈现为包含在布局渲染中的字符串值
$content
。 - v.layout.enabled
确定主模板是否应该有围绕它的布局。默认是
true
,但也需要指定v.layout
。
- v.contentType
指定 HTTP 响应中使用的内容类型。如果没有指定,默认取决于是否指定
v.json
。
默认情况下不包含
v.json=wrf
:text/html;charset=UTF-8
。默认为
v.json=wrf
:application/json;charset=UTF-8
。 - v.json
指定一个函数名称来包装呈现为 JSON 的响应。如果指定,则响应中使用的内容类型将为“application / json; charset = UTF-8”,除非被
v.contentType
覆盖。
输出将采用以下格式(带
v.json=wrf
):wrf("result":"<Velocity generated response string, with quotes and backslashes escaped>")
- v.locale
使用
$resource
工具和其他 LocaleConfig 实现工具的语言环境。默认语言环境是Locale.ROOT
。本地化资源从名为resources[_locale-code].properties
的标准 Java 资源包中加载
可以通过提供由 SolrResourceLoader 在速度子下的资源包可见的 JAR 文件来添加资源包。资源包不能在
conf/
下加载,因为只有 SolrResourceLoader 的类加载程序方面可以在这里使用。 - v.template.template_name
当启用 “params” 资源加载程序时,可以将模板指定为 Solr 请求的一部分。
VelocityResponseWriter上下文对象
上下文参考 | 描述 |
---|---|
|
SolrQueryRequest javadocs |
|
QueryResponse;大多数情况下,但在某些情况下,QueryResponse 不喜欢请求处理程序的输出(例如 AnalysisRequestHandler 会导致 ClassCastException 解析“响应”),则响应将是 SolrResponseBase 对象。 |
|
一个 Velocity EscapeTool 实例 |
|
一个 Velocity ComparisonDateTool 实例 |
|
一个 Velocity ListTool 实例 |
|
一个 Velocity MathTool 实例 |
|
Velocity NumberTool 实例 |
|
一个 Velocity SortTool 实例 |
|
一个 Velocity DisplayTool 实例 |
|
一个 Velocity ResourceTool 实例 |
|
当前的 VelocityEngine 实例 |
|
Solr 的 PageTool 的一个实例(只有当响应是 QueryResponse 时,分页才有意义) |
|
响应的调试部分的快捷方式,如果调试不在,则为null。这对于使用 |
|
呈现布局( |
[自定义工具] |
由 VelocityResponseWriter 注册的可选“工具”列表提供的工具可通过指定的名称获得。 |