freemarker 使用
后台管理项目,非前后端分离,通常使用freemarker、thymeleaf,下面介绍一些freemarker使用方法。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
配置后缀 默认 .ftlh
spring:
freemarker:
suffix: .ftl
直接上代码
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8"/>
<title></title>
</head>
<body>
FreeMarker模板引擎
<br/>
<p>
nullList:<#if nullList??>true<#else>false</#if>
</p>
<p>
nullList size:<#if nullList?? && nullList?size gt 0>true<#else>false</#if>
</p>
<p>
emptyList:<#if emptyList??>true<#else>false</#if>
</p>
<p>
emptyList has_content:<#if emptyList?has_content>true<#else>false</#if>
</p>
<p>
emptyList size:<#if emptyList?size gt 0>true<#else>false</#if>
</p>
<p>
dataList:
<#if dataList??>
<#list dataList as item>
${item!}
</#list>
</#if>
</p>
<p>nullStr: ${nullStr!}</p>
<p>nullStr !: ${nullStr!}</p>
<p>nullStr Default: ${nullStr!'Default'}</p>
<p>emptyStr: ${emptyStr!''}</p>
<p>demoStr: ${demoStr!''}</p>
<#--<p>nullStr?length: ${nullStr?length}</p>-->
<p>emptyStr?length: ${emptyStr?length}</p>
<p>demoStr?length: ${demoStr?length}</p>
<p>nullStr ??:<#if nullStr??>true<#else>false</#if></p>
<p>emptyStr ??:<#if emptyStr??>true<#else>false</#if></p>
<p>nullStr has_content:<#if nullStr?? && nullStr?has_content>true<#else>false</#if></p>
<p>emptyStr has_content:<#if emptyStr?has_content>true<#else>false</#if></p>
<p>emptyStr?length :<#if emptyStr?length gt 0>${emptyStr}</#if></p>
<p>userName: ${userName!''}</p>
<p>useName length: ${userName?length}</p>
<p>useName upper_case: ${userName?upper_case}</p>
<p>userName uncap_first: ${userName?uncap_first}</p>
<p>userName cap_first: ${userName?cap_first}</p>
</body>
</html>
输出
nullList:false
nullList size:false
emptyList:true
emptyList has_content:false
emptyList size:false
dataList: 1 2 3
nullStr:
nullStr !:
nullStr Default: Default
emptyStr:
demoStr: demoStr
emptyStr?length: 0
demoStr?length: 7
nullStr ??:false
emptyStr ??:true
nullStr has_content:false
emptyStr has_content:false
emptyStr?length :
userName: userName
useName length: 8
useName upper_case: USERNAME
userName uncap_first: userName
userName cap_first: UserName
总结:
判断字符串非空
<#if str?? && str?has_content>
// TODO
</#if>
<#if str?? && str?length gt 0>
// TODO
</#if>
判断列表非空
<#if dataList?? && dataList?has_content>
<#list dataList as item>
// TODO ${item!}
</#list>
</#if>
<#if dataList?? && dataList?size gt 0>
<#list dataList as item>
// TODO ${item!}
</#list>
</#if>
- ?? 判断左侧的变量是否丢失,相当于java中的null的判断,或者这个变量是否未定义。
- ?表示调用对象的方法,对象必须存在. str?length, list?size
- ! 用来给变量一个默认值,str!”defaultValue”