<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      springboot~使用freemaker模版進行部署

      實事上keycloak框架使用了freemaker進行頁面部署,在頁面上使用了vue進行了渲染,還是比較跟的上技術前沿的,只不過,keycloak沒有使用spring框架,可能是因為它是redhat公司推出的產品吧。

      依賴引用

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <!-- FreeeMarker模板引擎所需依賴 -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-freemarker</artifactId>
      </dependency>
      

      配置文件

      spring:
        freemarker:
          suffix: .ftl                                 # 設置模板后綴名
          content-type: text/html                      # 設置文檔類型
          charset: UTF-8                               # 設置頁面編碼格式
          cache: false                                 # 設置頁面緩存
          template-loader-path: classpath:/templates   # 設置ftl文件路徑
        mvc:
          static-path-pattern: /static         # 設置靜態文件路徑,js,css等
      

      添加模板

      • resources/templates/template.ftl
      <#macro registrationLayout bodyClass="默認值,子頁面沒有設置會使用這個值,子頁面設置后會覆蓋它">
      <#--語法介紹:-->
      <#--<#macro name param1 param2 ... paramN>--><!-- macro在模板里定義的變量,在子頁面中可以重寫變量的內容,它會反映的模板里-->
      <#--<#nested loopvar1, loopvar2, ..., loopvarN>-->
      <#--<p>${param1?cap_first}-->
          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title><#nested "head"></title>
          </head>
          <body>
          <p>
              ${bodyClass}
          </p>
          <h1>FreeMaker模板頁面</h1>
          <#nested "form">
          </body>
          </html>
      </#macro>
      

      添加頁面

      • resources/templates/f1/list.ftl
      <#import "../template.ftl" as layout>
      <@layout.registrationLayout bodyClass="<span style='color:red'>修改模板里的變量</span>";section>
          <#if section = "head">
              列表
          <#elseif section = "form">
              <table border="1">
                  <tr>
                      <td>編號</td>
                      <td>名稱</td>
                      <td>年齡</td>
                      <td>操作</td>
                  </tr>
              </table>
          </#if>
      </@layout.registrationLayout>
      

      添加controller

      @Controller
      @RequestMapping("free")
      public class F1Controller {
          @RequestMapping("list")
          public String selectUser(){
              return "f1/list";
          }
      }
      
      

      上面用到了freemaker中的宏macro,引用import,模塊嵌入nested 首字母大寫內建函數?cap_first等知識點,大家如果看不懂,可以查以上相關資料。

      頁面運行后的截圖

      freemaker幾個內建函數

      (1) 常用內建函數

      • 處理字符串:
        • ?substring 截取字符串,包頭不包尾(下標)
        • ?cap_first 第一個字母大寫
        • ?end_with 以什么字母結尾
        • ?contains 是否包含目標字符串
        • ?date datetime time 轉換成日期格式
        • ?starts_with 以什么字母開頭
        • ?index_of 返回某個指定的字符串值在字符串中首次出現的位置(下標)
        • ?last_index_of 獲取指定字符出現的最后位置(下標)
        • ?split 分隔
        • ?trim 去兩端空格
      • 處理數字:
        • ?string x?string(“0.##”) 變成小數點后幾位
        • ?round 四舍五入
        • ?floor 去掉小數點
        • ?ceiling 近1 變成整數
      • 處理list:
        • ?first: 取List值第一個值
        • ?last: 取List值最后一個值
        • ?seq_contains: 是否包含指定字符
        • ?seq_index_of: 指定字符所在位置
        • ?size: 集合大小
        • ?reverse: 集合倒序排列
        • ?sort: 對集合進行排序
        • ?sort_by: 根據某一個屬性排序
        • ?chunk: 分塊處理
      • 其他:
        • ?is_string: 是否為字符類型
        • ?is_number: 是否為整數類型
        • ?is_method: 是否為方法
      • 判斷整個變量
        • ?has_content: 判斷對象是否為空或不存在
        • ?eval: 求值

      (2) macro(宏指令)

      • 調用:<@macro_name param />
      <#macro 變量名 參數>
        <#nested/>
      </#macro>
      

      (3) function(函數指令)

      • 調用:$
      <#function 變量名 參數>
        <#return>
      </#function>
      
      posted @ 2021-08-05 09:43  張占嶺  閱讀(331)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 下面一进一出好爽视频| 午夜在线观看成人av| 国产丝袜在线精品丝袜| 亚洲综合国产激情另类一区| 边添小泬边狠狠躁视频| 亚洲精品熟女国产| 内射中出无码护士在线| 亚洲一区二区三级av| 亚洲三区在线观看内射后入| аⅴ天堂中文在线网| 亚洲欧美综合精品成人导航| 永清县| 日韩乱码人妻无码中文字幕视频| 97一区二区国产好的精华液| 色天天天综合网色天天| 丝袜无码一区二区三区| 国精品午夜福利视频不卡| 陇西县| 亚洲av第二区国产精品| 亚洲第三十四九中文字幕| 日韩大片一区二区三区| 亚洲国产中文字幕精品| 色吊丝一区二区中文字幕| 高清有码国产一区二区| 少妇人妻无码专区视频| 亚洲av成人一区国产精品| 亚洲精品一区二区三区色| 人人入人人爱| 亚洲一区精品视频在线| 99网友自拍视频在线| 丁香五月激情图片| 色狠狠色婷婷丁香五月| 久久精品中文字幕少妇| 久久香蕉国产线看观看怡红院妓院| 中国china体内裑精亚洲日本 | 久久碰国产一区二区三区| 亚洲精品一区二区区别| 1000部拍拍拍18勿入免费视频下载| 国产精品毛片在线看不卡| 国产精品视频午夜福利| 色猫咪av在线观看|