FreeMarker标签使用整理

2024-06-17 00:32

本文主要是介绍FreeMarker标签使用整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近做了个新项目,里面用了FreeMarker,之前有学过一点,一直没有系统的整理,导致开发时有时经常有遗忘。这里做一下整理


FreeMarker 获取页面request、session


使用Request里的Attribute值最简单的方法就是直接${AttributeName}或者安全一点:${AttributeName!"default Value"}

1.取Application范围的对象

xml 代码

   1. <#if Application.myApplicationAttribute?exists>  

   2.      ${Application.myApplicationAttribute}   

   3. </#if>  

或者 :  ${Application.myApplicationAttribute!"default value"}   

2.取session范围的对象

xml 代码

   1. <#if Session.mySessionAttribute?exists>  

   2.      ${Session.mySessionAttribute}   

   3. </#if>  

或者 :   ${Session.mySessionAttribute!"default value"}   

3.取request范围的对象

xml 代码

   1. <#if Request.myRequestAttribute?exists>  

   2.       ${Request.myRequestAttribute}   

   3. </#if>  

或者 :   ${Request.myRequestAttribute!"default value"}   

4.取request parameter范围的对象

xml 代码

   1. <#if Parameters.myParameter?exists>  

   2.      ${Parameters.myParameter}   

   3. </#if>  

或者 : ${Parameters.myParameter!"default value"}   

5.取context parameter范围的对象

xml 代码

   1. ${stack.findValue('#myContextParam')}  

 

 request 对象直接对应 HttpServletResponse

例如 获取 当前网页地址:  ${request.requestURL}

客户端IP地址:  ${request.getRemoteAddr()} 或者  ${request.remoteAddr}

提交方式:  ${request.method}

等等

 Request: 用于获取Request对象中的attribute对象。

例如:${Request["myRequestAttribute"]} 这样是直接在页面输出属性值。相当于request.getAtrribute("myRequestAttribute");

         如果要对这个值进行判断就必须使用如下格式:<#if Request["myRequestAttribute"]="edit">

或者 : ${Request["myRequestAttribute"]!"default value"}   

 

Session:用于获取Session 对象中的attribute对象。

用法参照Request的用法。

 

Application:用于获取 Application(ServletContext)对象中的attribute对象。

用法参照Request的用法。

 

RequestParameters:用 于获取Request对象的parameter参数(浏览器端发送的请求数据)

例如:${RequestParameters["myRequestAttribute"]}等同于 request.getParameter("myRequestAttribute");

 

Parameters:属性获取,依次从 RequestParameters、Request、Session、Application对象中获取对应属性/参数,一旦获取,则不再向下查找。

例如:${Parameters["myRequestAttribute"]}

  1. ${Request["a"]}   
  2. ${RequestParameters["a"]}   
  3. ${Session ["a"]}   
  4. ${Application ["a"]}   
  5. ${JspTaglibs ["a"]}   
  6. 注意RequestParameters等内部对象时常不能获得所以要:   
  7. ${RequestParameters?default({})["_errors"]?default("params")}   
  8. ${Request["request"]?default("request")}   
  9. ${Session["session"]?default("session")}   
  10. ${Application["ctx"]?default("ctx")}   
  11. ${RequestParameters?default({})?keys?size}   
  12. ${Request?keys?first}   
  13. Freemarker可以直接取pageContext,requestAttribute,session,application中的数据,就是不能取requestParameter;  
2. if,else,list的使用

<#if x == 1>x is 1
<#elseif x == 2>x is 2
<#elseif x == 3>x is 3
<#elseif x == 4>x is 4
<#else>x is not 1 nor 2 nor 3 nor 4
</#if>

freemarker list (长度,遍历,下标,嵌套,排序)

1. freemarker获取list的size :

 

Java

ArrayList<String> list = new ArrayList<String>();

 

Freemaker

${list?size}

 

 

2. list的遍历:

 

<#list animals as being>

    <tr>

        <td>${being.name}${being.price}<td>

    </tr>

</#list>

前端select下拉框的典型应用,遍历且选中相等的值

<select name="categoryType" class="form-control"><#list categoryList as category>
        <option value="${category.categoryType}"
                <#if (productInfo.categoryType)?? && productInfo.categoryType == category.categoryType>
                    selected
                </#if>
            >${category.categoryName}
        </option></#list>
</select>

 

3. 遍历MAP 

 

 <#list map?keys as k>

    <option value="${k}">${map[k]}</option>

</#list>

 

 

4.list遍历中的下标序号:

 

_index是list的一个属性

<#list list as a>

     ${a_index}

</#list> 

 

5.取LIST中第i个元素的值

${list[i]} 

嵌套时前面要有括号,如下,将字符串变成list,然后取第i个元素的值

 ${(str?split(","))[i]} 

 

 

6. list的嵌套:

<#list jsskList as jsskVO>

   <#list kcList as kcVO>

           <#if kcVO.kch=jsskVO.kch> (kcVO里有编号和名称,而jsskVO里只有编号)

                  ${kcVO.kcm} 

           </#if>

   </#list>

</#list>

 

 

7. list排序:

      升序 .sort_by()

<#list list?sort_by("字段") as x>

</#list>

 

 

     降序 .sort_by()?reverse

<#list list?sort_by("字段")?reverse as x> 

</#list>

 

8.item_has_next,size使用:

 

<#list userList as user>


 
 
<#if !user_has_next>
 
  
共有${userList?size}最后一个用户是:${user.userName}
  </#if>
</#list>


这篇关于FreeMarker标签使用整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067990

相关文章

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

使用Python实现一个优雅的异步定时器

《使用Python实现一个优雅的异步定时器》在Python中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于asyncio和threading模块,可扩展的异步定... 目录需求背景代码1. 单例事件循环的实现2. 事件循环的运行与关闭3. 定时器核心逻辑4. 启动与停

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自