Velocity模板_toolbox
阿新 • • 發佈:2019-01-10
velocity模板引擎本身提供了基本的語法層面的解析,在實際的使用中還有很多可以擴充套件的工具來簡化開發中遇到的一些問題,比如資料的格式化、頁面相關的路徑處理等。
開發環境
- spring
- spring boot
- velocity
- spring boot mvc
- mybatis
使用指南
建立toolbox.xml: (放在WEB_INF目錄下)
<?xml version="1.0" encoding="UTF-8"?>
<tools>
<data type="string" key="version" value="2.0"/>
<!-- 在這裡配置 類,在專案啟動的時候就自動把類例項化好了,在頁面就可以用了,例子:下面 ${test.Method()}-->
<toolbox scope="request">
<!-- currentProject util start -->
<!-- <tool key="test" class="com.gzrj.services.Test"></tool> -->
<!-- currentProject util end -->
<!-- 下面的這些配置都是velocity的配置,可以不用管,也不能更改 -->
<!-- velocity util start -->
<tool class="org.apache.velocity.tools.view.CookieTool"/>
<tool class="org.apache.velocity.tools.view.ImportTool"/>
<tool class="org.apache.velocity.tools.view.IncludeTool"/>
<tool class="org.apache.velocity.tools.view.LinkTool"/>
<tool class="org.apache.velocity.tools.view.PagerTool"/>
<tool class="org.apache.velocity.tools.view.ParameterTool"/>
<tool class="org.apache.velocity.tools.view.ViewContextTool"/>
<tool class="org.apache.velocity.tools.generic.ContextTool"/>
<tool class="org.apache.velocity.tools.generic.LoopTool"/>
<tool class="org.apache.velocity.tools.generic.RenderTool"/>
<!-- velocity util end -->
</toolbox>
<toolbox scope="session" createSession="false">
<tool class="org.apache.velocity.tools.view.BrowserTool"/>
</toolbox>
<toolbox scope="application">
<tool class="org.apache.velocity.tools.generic.AlternatorTool"/>
<tool class="org.apache.velocity.tools.generic.ClassTool"/>
<tool class="org.apache.velocity.tools.generic.ComparisonDateTool"/>
<tool class="org.apache.velocity.tools.generic.ConversionTool"/>
<tool class="org.apache.velocity.tools.generic.DisplayTool"/>
<tool class="org.apache.velocity.tools.generic.EscapeTool"/>
<tool class="org.apache.velocity.tools.generic.FieldTool"/>
<tool class="org.apache.velocity.tools.generic.MathTool"/>
<tool class="org.apache.velocity.tools.generic.NumberTool"/>
<tool class="org.apache.velocity.tools.generic.ResourceTool"/>
<tool class="org.apache.velocity.tools.generic.SortTool"/>
<tool class="org.apache.velocity.tools.generic.XmlTool"/>
<tool class="org.apache.velocity.tools.generic.ListTool"/>
<tool class="org.apache.velocity.tools.generic.DateTool"/>
</toolbox>
</tools>
Spring中配置Velocity Tools
- 新增配置
基本的使用中將配置好的屬性放到/WEB-INF目錄下,並在application.properties中新增對應的配置:spring.velocity.toolbox-config-location=WEB-INF/toolbox.xml - 列表內容
- 新增配置類
import org.springframework.boot.autoconfigure.velocity.VelocityProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.velocity.VelocityViewResolver;
@Configuration
public class VelocityConfig {
@Bean(name = "velocityViewResolver")
public VelocityViewResolver velocityViewResolver(VelocityProperties properties) {
VelocityViewResolver viewResolver = new VelocityViewResolver();
viewResolver.setViewClass(VelocityLayoutToolboxView.class);
properties.applyToViewResolver(viewResolver);// 設定預設屬性,比如字首和字尾
return viewResolver;
}
}
類2:
public class VelocityLayoutToolboxView extends VelocityToolboxView {
private VelocityLayoutToolboxView() {
}
@Override
protected Context createVelocityContext(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
ViewToolContext ctx = new ViewToolContext(this.getVelocityEngine(), request, response, this.getServletContext());
if (this.getToolboxConfigLocation() != null) {
XmlFactoryConfiguration factory = new XmlFactoryConfiguration();
factory. read(ResourceUtils.getURL(getToolboxConfigLocation()).openStream());
ToolboxFactory toolboxFactory = factory.createFactory();
toolboxFactory.configure(factory);
Collection<ToolboxConfiguration> toolboxes = factory.getToolboxes();
for (ToolboxConfiguration tc : toolboxes) {
ctx.addToolbox(toolboxFactory.createToolbox(tc.getScope()));// 這樣操作後就可以用工具裡面的東西了。
}
}
if (model != null && !model.isEmpty()) {
ctx.putAll(model);
}
return ctx;
}
}
配置完成後,頁面就可以使用工具類了。
常用工具類說明
1.AlternatorTool:通過一個數組變數週期
配置屬性:autlAlternate (),boolean 型別,預設是true
方法和屬性:
A:#set( $alt = $alternator.auto(value1,value2,...) );建立一個自動的交替符
B:#set( $alt = $alternator.make(value1,value2,...) );建立一個預設的交替符
C:#set( $alt = $alternator.manual(value1,value2,...) );建立一個手動的交替符
2、ClassTool:工具,它的目的是要在模板中使用Java反射
3、ComparisonDateTool:工具格式,解析和比較日期
4、ContextTool:取當前頁面的值
5、ConversionTool 允許資料之間的型別轉換
6、displaytool工具提供了各種各樣的方法來控制輸出顯示各種引用你的模板
7、escapetool工具提供一些逃離設施
8、FieldTool:工具允許方便地訪問公共靜態欄位類,如字串常量
9、LinkTool
10、MathTool:工具提供數學函式
11、NumberTool:工具用於格式化數字
12、RenderTool:工具,使方法來評估給定的字串作為VTL(Velocity模板語言)使用一個預先配置的上下文或您直接提供
13、ResourceTool:
工具訪問resourcebundle的和格式化訊息,大多數方法都返回一個新物件,大多與原始相同的方法,允許您建立引數優雅和簡單,而不是試圖記住如何使用方法與許多引數,必須在一個特定的順序:所以,你可以訪問資源的關鍵“你好。誰”“otherStuff”包與一個訊息這樣的論點:美元text.hello.whoever.bundle(otherStuff).insert(世界)而不是這樣的:text.get美元(“你好。誰”、“otherStuff“零美元,”世界”)