freemarker初步使用小總結

在六月份的時候,接觸到的freemarker這個模板引擎。當時項目上由於須要在已經固定好模板的json串根據獲取的不一樣參數,生成不一樣參數的json。最開始我是在方法中用jsonObject這個對象去拼裝json,後面因爲靈活性過低。改個屬性須要改動大。後面在網上尋找一些方法就找到這個freemaker這個模板引擎。
在項目中我是使用ftl類型文件提早把模板json寫好,在方法中經過流讀取文件轉成字符串。再將拼接好的參數替換到json指定位置。
在這個替換的過程咱們須要注意一些字符作處理,否則參數替換後可能會生成一個不可讀的json串。(下面我就寫一下我在作的過程當中遇到的一些小問題)
一、數字型參數不作處理到千位數會有逗號(1,000)json

這種時候咱們須要在模板這個set參數的位置加個?c
    "length":${column.length?c}

二、有時候傳的參數裏面帶有"這種時候會使生成的json串沒法識別這時候咱們須要使用替換字符串方法replace 將參數中"的替換成\"數組

"formulaExpression":"${formulaExpression?replace("\"", '\\"')}"

三、將參數boolean型轉成string型app

"useScpUpload":${isTrue?string('true','false')}

四、在遍歷數組時經常使用的屬性code

<#list 集合 as 循環的變量>

    <#list gpProblemSet as columnMapping>
        ${columnMapping.id}/${columnMapping.name}
    </#list>

4-1 循環的變量_has_next(表示是否還有下一個,有則加上標籤內容)orm

<#list gpProblemSet as columnMapping>
                {
                  "sourceColumnCode":"${columnMapping.sourceColumnCode}"
                }
    <#if columnMapping_has_next>,</#if>
   
</#list>

4-2 循環的變量_index(表示當前遍歷數組的下標)對象

<#list gpProblemSet as columnMapping>
                {
        "index": "${columnMapping_index}"
                }
</#list>

五、null值處理(name爲null)模板引擎

"name": ${name!} -->顯示空白
   "name": ${name!'hello'} -->若name不爲空則顯示自己的值,不然顯示hello 
   "name":<#if name?exists>不爲空</#if>

還有不少方法未用到,到時有用到在更新...字符串

相關文章
相關標籤/搜索