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>

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

相关文章
相关标签/搜索