Velocity響應(yīng)編寫器

2018-12-04 14:49 更新

VelocityResponseWriter(Velocity響應(yīng)編寫器)是 contrib/velocity 目錄中可用的可選插件。當(dāng)使用諸如 “_default”、“techproducts” 和 “example / files” 等配置時(shí),它為瀏覽用戶界面提供動(dòng)力。

必須添加它的 JAR 和依賴項(xiàng)(通過<lib>或 solr/home lib 包含),并且必須在 solrconfig.xml 像這樣注冊(cè):

<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 使用的可選的初始化和自定義工具參數(shù);下文詳細(xì)介紹了這些內(nèi)容。這些初始化參數(shù)僅在 solrconfig.xml 中的編寫器注冊(cè)中指定,而不是作為請(qǐng)求時(shí)間參數(shù)。請(qǐng)參閱下面的請(qǐng)求時(shí)間參數(shù)。

配置和使用

VelocityResponseWriter 初始化參數(shù)

  • template.base.dir 

    如果指定并作為文件系統(tǒng)目錄存在,則將為此目錄添加一個(gè)文件資源加載程序。此目錄中的模板將覆蓋 “solr” 資源加載程序模板。

  • init.properties.file

    指定一個(gè)屬性文件名,必須存在于 Solr 的conf/目錄(而不是在velocity/子目錄中)或者 <lib> 的 JAR 文件的根中。

  • params.resource.loader.enabled

    “params” 資源加載程序允許在 Solr 請(qǐng)求參數(shù)中指定模板。例如:

    http://localhost:8983/solr/gettingstarted/select?q=\*:*&wt=velocity&v.template=custom&v.template.custom=CUSTOM%3A%20%23core_name

    v.template=custom表示要呈現(xiàn)一個(gè)名為“自定義”的模板,其值v.template.custom是自定義模板。默認(rèn)情況下為false;它不常用,需要時(shí)啟用。

  • solr.resource.loader.enabled

    “solr” 資源加載程序是默認(rèn)注冊(cè)的唯一模板加載程序。模板是由 SolrResourceLoader 從velocity/子目錄下可見的資源提供的。VelocityResponseWriter 本身有一些內(nèi)置的模板(在它 JAR 文件中的velocity/),這些模板可以通過這個(gè)加載程序自動(dòng)使用。當(dāng)相同的模板名稱處于 conf/velocity/ 或使用template.base.dir選項(xiàng)時(shí),可以覆蓋這些內(nèi)置模板。

  • tools

    可以將外部“工具”指定為字符串名稱/值(工具名稱/類別名稱)對(duì)的列表。Velocity 上下文中的工具只是 Java 對(duì)象。工具類是使用無參數(shù)構(gòu)造函數(shù)(或者一個(gè)單一的 SolrCore-arg 構(gòu)造函數(shù),如果存在的話)構(gòu)造的,并以指定名稱添加到 Velocity 上下文中。

    自定義注冊(cè)的工具可以重寫具有相同名稱的內(nèi)置上下文對(duì)象,除了$request,$response,$page$debug(這些工具被設(shè)計(jì)成不能被重寫)。

VelocityResponseWriter請(qǐng)求參數(shù)

  • v.template

    指定要呈現(xiàn)的模板的名稱。

  • v.layout

    指定一個(gè)模板名稱,用作圍繞主v.template指定模板的布局。

    主模板呈現(xiàn)為包含在布局渲染中的字符串值$content

  • v.layout.enabled

    確定主模板是否應(yīng)該有圍繞它的布局。默認(rèn)是true,但也需要指定v.layout。

  • v.contentType

    指定 HTTP 響應(yīng)中使用的內(nèi)容類型。如果沒有指定,默認(rèn)取決于是否指定v.json

    默認(rèn)情況下不包含v.json=wrftext/html;charset=UTF-8。

    默認(rèn)為v.json=wrfapplication/json;charset=UTF-8

  • v.json

    指定一個(gè)函數(shù)名稱來包裝呈現(xiàn)為 JSON 的響應(yīng)。如果指定,則響應(yīng)中使用的內(nèi)容類型將為“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 實(shí)現(xiàn)工具的語(yǔ)言環(huán)境。默認(rèn)語(yǔ)言環(huán)境是Locale.ROOT。本地化資源從名為resources[_locale-code].properties的標(biāo)準(zhǔn) Java 資源包中加載

    可以通過提供由 SolrResourceLoader 在速度子下的資源包可見的 JAR 文件來添加資源包。資源包不能在conf/下加載,因?yàn)橹挥?SolrResourceLoader 的類加載程序方面可以在這里使用。

  • v.template.template_name

    當(dāng)啟用 “params” 資源加載程序時(shí),可以將模板指定為 Solr 請(qǐng)求的一部分。

VelocityResponseWriter上下文對(duì)象

上下文參考 描述

request

SolrQueryRequest javadocs

response

QueryResponse;大多數(shù)情況下,但在某些情況下,QueryResponse 不喜歡請(qǐng)求處理程序的輸出(例如 AnalysisRequestHandler 會(huì)導(dǎo)致 ClassCastException 解析“響應(yīng)”),則響應(yīng)將是 SolrResponseBase 對(duì)象。

esc

一個(gè) Velocity EscapeTool 實(shí)例

date

一個(gè) Velocity ComparisonDateTool 實(shí)例

list

一個(gè) Velocity ListTool 實(shí)例

math

一個(gè) Velocity MathTool 實(shí)例

number

Velocity NumberTool 實(shí)例

sort

一個(gè) Velocity SortTool 實(shí)例

display

一個(gè) Velocity DisplayTool 實(shí)例

resource

一個(gè) Velocity ResourceTool 實(shí)例

engine

當(dāng)前的 VelocityEngine 實(shí)例

page

Solr 的 PageTool 的一個(gè)實(shí)例(只有當(dāng)響應(yīng)是 QueryResponse 時(shí),分頁(yè)才有意義)

debug

響應(yīng)的調(diào)試部分的快捷方式,如果調(diào)試不在,則為null。這對(duì)于使用#if($debug)…?#end的模板中的僅調(diào)試節(jié)非常方便

content

呈現(xiàn)布局(v.layout.enabled=truev.layout=<template>)時(shí)主模板的呈現(xiàn)輸出。

[自定義工具]

由 VelocityResponseWriter 注冊(cè)的可選“工具”列表提供的工具可通過指定的名稱獲得。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)