Freemarker基本语法

简介: Freemarker基本语法

一、Freemarker取值


1.属性名-取值,可对属性进行计算2,{属性名!默认值} - 使用默认值

3.${属性名?string} - 格式化输出

代码如下:


<#--${属性名}-->
<h1>${title}</h1>
<#--${属性名.子属性}-->
<h2>${user.name}</h2>
<#--${xxx!默认值}设置当xxx为空或者不存在时显示对应的默认值-->
<h2>${user.address!'未登记地址'}</h2>
<#--利用?string()内置函数进行格式化输出-->
<h2>${user.salary?string('¥0.00')}</h2>
<h2>${user.birthday?string('yyyy年MM月dd日')}</h2>


二、Freemarker判断与循环



1.分支判断


<#if 条件1>
条件1成立执行代码
<#elseif 条件2>
条件2成立执行代码
<#elseif 条件3>
条件3成立执行代码
<#else>
</#if>


代码示例如下:


<#if user.salary <= 1000> <#--user == null-->
    <h3>低收入人群需要政策补贴</h3>
<#elseif (user.salary > 1000 && user.salary < 10000)>
    <h3>中等收入人群鼓励创业</h3>
<#else>
    <h3>高收入人群要多做公益</h3>
</#if>
<!-- ??代表属性是否存在,对象存在返回true,不存在返回false -->
<#if manager??>
        manager已存在
    <#else >
        manager不存在
</#if>
<#--freemarker三目运算符-->
${(user.salary<1500)?string("低收入人群" , "高收入人群")}


三、list循环迭代


<#list users as u>

  • image.png{u.name}

  • <ul>
    <#--#list 数据源 as 迭代变量-->
        <#list users as u>
        <li>${u_index + 1}-${u.username}-${u.name}</li>
        </#list>
    </ul>


    四、Include子页面



    通过Include可以把写好的页面引入到当前页面


    五、内置函数



    15616626-99e370718895b236.png


    内置函数



    相关文章
    |
    Java 数据库连接 测试技术
    SpringBoot集成mybatis-plus及分页实现
    SpringBoot集成mybatis-plus及分页实现
    772 0
    |
    消息中间件 NoSQL Java
    spring boot2升级boot3指南
    本文介绍了如何将Spring Boot 2.x升级至Spring Boot 3.x,涵盖使用OpenRewrite自动化重构工具进行代码转换、依赖版本升级、配置属性调整及常见问题处理等内容,帮助开发者高效完成升级工作。
    3125 7
    |
    9月前
    |
    机器人 API 数据安全/隐私保护
    保姆级教程:阿里云上及本地部署OpenClaw/Clawdbot+集成飞书等Skills步骤流程
    在2026年企业协同办公数字化转型的浪潮中,OpenClaw(原Clawdbot、曾用名Moltbot)作为开源优先的AI代理与自动化平台,凭借灵活的部署方式、丰富的技能生态和零技术门槛的操作优势,成为企业提升办公效率的核心工具。无需专业编程基础,即可轻松实现文档生成、代码开发、任务自动化、多模态解析等多元功能,同时支持与飞书无缝集成,构建24小时响应的企业级AI机器人,打破办公工具割裂的痛点,实现指令直达、任务秒级执行。
    1688 8
    |
    监控 安全 Java
    解决 Spring Boot 中 SecurityConfig 循环依赖问题的详解
    本文详细解析了在 Spring Boot 中配置 `SecurityConfig` 时可能遇到的循环依赖问题。通过分析错误日志与代码,指出问题根源在于 `SecurityConfig` 类中不当的依赖注入方式。文章提供了多种解决方案:移除 `configureGlobal` 方法、定义 `DaoAuthenticationProvider` Bean、使用构造函数注入以及分离配置类等。此外,还讨论了 `@Lazy` 注解和允许循环引用的临时手段,并强调重构以避免循环依赖的重要性。通过合理设计 Bean 依赖关系,可确保应用稳定启动并提升代码可维护性。
    1150 0
    |
    人工智能 数据挖掘 API
    3个实操案例,带你体验真正流畅可用的企业级通用智能体
    本文探讨了企业级通用智能体的现状与应用,重点介绍了实在Agent。文章指出,当前通用AI Agent分为两类:一类是类似Manus的产品,采用大模型+API模式;另一类是在RPA基础上融合AI Agent架构的产品。实在Agent属于后者,具备低门槛、简单直白的操作方式和随心掌控的执行过程。文中通过豆瓣电影数据获取、多平台舆情分析及剪映图文成片自动化三个案例,展示了实在Agent的实际应用能力。此外,文章还强调了企业级智能体需具备可控、稳定和高效的特性,并总结了实在Agent满足商业化落地的核心能力,包括企业知识库、业务系统操作指南、模型接入支持及私有化部署等。
    2368 8
    |
    存储 人工智能 Java
    将 Spring AI 与 LLM 结合使用以生成 Java 测试
    AIDocumentLibraryChat 项目通过 GitHub URL 为指定的 Java 类生成测试代码,支持 granite-code 和 deepseek-coder-v2 模型。项目包括控制器、服务和配置,能处理源代码解析、依赖加载及测试代码生成,旨在评估 LLM 对开发测试的支持能力。
    846 1
    |
    开发框架 JavaScript 前端开发
    Electron 重大更新,33.0.0版本发布,带来多项新特性与改进!
    本文介绍了 Electron 33.0.0 版本的重要更新,包括核心组件的升级(Chromium、Node.js 和 V8),新增功能(如 app.setClientCertRequestPasswordHandler 和 View.setBorderRadius),重要改进和主要问题修复。建议开发者尽快升级,以享受更强大的性能和功能。
    1086 0
    Electron 重大更新,33.0.0版本发布,带来多项新特性与改进!
    |
    存储 缓存 Java
    createTempFile方法详解
    createTempFile方法详解
    1070 1
    springboot创建并配置环境2 - 配置基础环境
    springboot创建并配置环境2 - 配置基础环境
    springboot创建并配置环境2 - 配置基础环境

    热门文章

    最新文章