03.Beetl模板變量以及自定義模板配置---《Beetl視頻課程》

本期視頻設置一個全局可配置的網站標題睬罗;

內容簡介:使用臨時變量、全局變量报账、共享變量纵势、自定義Beetl配置、使用ctxPath解決亂碼藐石、404等問題

一起學beetl目錄:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598

作者:GK


臨時變量

在模板中定義的變量成為臨時變量即供,這類似js中采用var 定義的變量,如下例子

<%
var a = "xxxx";

%>

全局變量

全局變量是通過template.binding傳入的變量,這些變量能在模板的任何一個地方于微,包括子模板都能訪問到逗嫡。如java代碼里

template.binding("list",service.getUserList());

//在模板里
<%
for(user in list){
%>
hello,${user.name};
<% } %>

在請求中beetl會從request->attributes中獲取變量作為模板變量,所以下面的page株依,blogSiteTitle也是全局變量

 @GetMapping("/")
    public String index(@RequestParam(required = false, defaultValue = "1") Integer pageNumber,
                        @RequestParam(required = false, defaultValue = "8") Integer pageSize,
                        HttpServletRequest request) {
        PageQuery<Blog> pageQuery = blogService.pageBlog(pageNumber, pageSize);
        request.setAttribute("page", pageQuery);
        request.setAttribute("blogSiteTitle", "XXX網站");
        return "index1.html";
    }

共享變量
共享變量指在所有模板中都可以引用的變量驱证,可通過groupTemplate.setSharedVars(Map<String, Object> sharedVars)傳入變量,這些變量能用在 所有模板 的任何一個地方

GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);
Map<String,Object> shared = new HashMap<String,Object>();
shared.put("name", "beetl");
gt.setSharedVars(shared);

哪怎么去獲取GroupTemplate對象呢?我們可以自定義一個Beetl配置恋腕。然后設置我們要的值抹锄。

自定義beetl配置

package com.ibeetl.blog.config;

import com.ibeetl.starter.BeetlTemplateConfig;
import org.beetl.core.GroupTemplate;
import org.beetl.core.resource.ClasspathResourceLoader;
import org.beetl.ext.spring.BeetlGroupUtilConfiguration;
import org.beetl.ext.spring.BeetlSpringViewResolver;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 * @author GavinKing
 * @ClassName: BeetlConfig
 * @Description:
 * @date 2018/11/22
 */
@Configuration
public class BeetlConfig {

    //模板根目錄 ,比如 "templates"
    @Value("${beetl.templatesPath}") String templatesPath;
    @Value("${blog.title}") String title;

    @Bean
    public GroupTemplate getGroupTemplate(BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) {
        GroupTemplate gt = beetlGroupUtilConfiguration.getGroupTemplate();
        Map<String,Object> shared = new HashMap<>();
        shared.put("blogSiteTitle", title);
        gt.setSharedVars(shared);
        return gt;
    }


    @Bean
    public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() {
        BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration();
        //獲取Spring Boot 的ClassLoader
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        if(loader==null){
            loader = BeetlConfig.class.getClassLoader();
        }
        ClasspathResourceLoader cploder = new ClasspathResourceLoader(loader,
                templatesPath);
        beetlGroupUtilConfiguration.setResourceLoader(cploder);
        beetlGroupUtilConfiguration.init();
        //如果使用了優(yōu)化編譯器,涉及到字節(jié)碼操作伙单,需要添加ClassLoader
        beetlGroupUtilConfiguration.getGroupTemplate().setClassLoader(loader);
        return beetlGroupUtilConfiguration;

    }

    @Bean(name = "beetlViewResolver")
    public BeetlSpringViewResolver getBeetlSpringViewResolver(BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) {
        BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
        beetlSpringViewResolver.setContentType("text/html;charset=UTF-8");
        beetlSpringViewResolver.setOrder(0);
        beetlSpringViewResolver.setConfig(beetlGroupUtilConfiguration);
        return beetlSpringViewResolver;
    }
}

從session中取值

從session中取值和request中一樣获高,只不過前面加一個session

${session.title}

解決編碼錯誤

修改SpringBoot的 application.properties配置文件,增加編碼的配置

server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8

共享變量ctxPath

Beetl默認共享變量ctxPath表示 Web應用ContextPath

可以用解決路徑問題吻育,如 圖片念秧、樣式無法找到的問題


項目git地址:https://gitee.com/gavink/beetl-blog

視頻地址:下載下來會更清晰

百度網盤下載: https://pan.baidu.com/s/1LyxAxlKpVXgVjwSXIbzBuA 提取碼: 68im

bilibili (可以調節(jié)清晰度): https://www.bilibili.com/video/av36278644/?p=3

博客目錄:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市布疼,隨后出現(xiàn)的幾起案子摊趾,更是在濱河造成了極大的恐慌,老刑警劉巖游两,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砾层,死亡現(xiàn)場離奇詭異,居然都是意外死亡贱案,警方通過查閱死者的電腦和手機肛炮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宝踪,“玉大人铸董,你說我怎么就攤上這事‰饶” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵蕴忆,是天一觀的道長颤芬。 經常有香客問我,道長套鹅,這世上最難降的妖魔是什么站蝠? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮卓鹿,結果婚禮上菱魔,老公的妹妹穿的比我還像新娘。我一直安慰自己吟孙,他們只是感情好澜倦,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著杰妓,像睡著了一般藻治。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巷挥,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天桩卵,我揣著相機與錄音,去河邊找鬼。 笑死雏节,一個胖子當著我的面吹牛胜嗓,可吹牛的內容都是我干的。 我是一名探鬼主播钩乍,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼辞州,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了件蚕?” 一聲冷哼從身側響起孙技,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎排作,沒想到半個月后牵啦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡妄痪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年哈雏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衫生。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡裳瘪,死狀恐怖,靈堂內的尸體忽然破棺而出罪针,到底是詐尸還是另有隱情彭羹,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布泪酱,位于F島的核電站派殷,受9級特大地震影響,放射性物質發(fā)生泄漏墓阀。R本人自食惡果不足惜毡惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斯撮。 院中可真熱鬧经伙,春花似錦、人聲如沸勿锅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粱甫。三九已至泳叠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茶宵,已是汗流浹背危纫。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人种蝶。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓契耿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親螃征。 傳聞我的和親對象是個殘疾皇子搪桂,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內容