1. 程式人生 > >Velocity模板_toolbox

Velocity模板_toolbox

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
  • 列表內容
    1. 新增配置類
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“零美元,”世界”)

14、SortTool:排序工具集合

15、XmlTool:工具用於閱讀/導航XML檔案;這在幕後使用dom4j提供完整的XPath支援遍歷XML檔案

16、BrowserTool:瀏覽器嗅探工具,它定義了屬性用於測試客戶端瀏覽器、作業系統、裝置、語言…除了瀏覽器版本的相關屬性和語言,所有屬性都是布林值。

17、CookieTool:工具用於讀取和設定cookie

18、ImportTool:通用text-importing檢視的工具模板

19、IncludeTool:工具允許透明的內容協商的方式模仿Apache httpd MultiViews方法;讀取預設語言的ViewToolContext org.apache.velocity.tools.view.i18n。defaultLanguage;請注意,它並不實際的# include或#為你解析,但僅僅是幫助包括內容協商

20:LinkTool:工具使用超連結格式;這個工具有點不尋常的在每一個方法,引數將返回一個新例項的工具的一個副本的方法之一是呼籲,有額外的改變指定的方法呼叫,允許連結呼叫像href = ” $ link.relative(foobar.html).param .anchor(“id”、“25”)(“第四單元”)”(這將產生href = ” foobar.html ? id = 25 #第四單元”)

21:PagerTool:工具做request-based分頁列表中的專案

22:ParameterTool:工具用來解析請求引數

23:ViewContextTool:擴充套件的通用ContextTool包括從HttpServletRequest鍵和值,HttpSession和ServletContext屬性