`
步青龙
  • 浏览: 298138 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
72ba33fb-eefe-3de1-bd65-82a6e579265d
Java面试
浏览量:0
社区版块
存档分类
最新评论

Freemarker页面标签总结

阅读更多

 

Freemarker分页宏

 

<#macro page pagination countlist url> 
	<#if pagination.totalPage gt 1>
		<div class="pages" style="margin: 0px auto;">
			<#if pagination.pageNo==1>
				<span class="front" style = "background-color:yellow;">上一页</span>
				<#else>
					<a href = "${url}pageNo=${pagination.pageNo-1}">上一页</a>
			</#if> 
			<#list countlist as countlist>
				<#if pagination.pageNo== countlist>
					<span class="current" style = "background-color:red;">${countlist}</span>
					<#else>
						<a href = "${url}pageNo=${countlist}">${countlist}</a>
				</#if> 
			</#list>
			 				
			<#if pagination.pageNo == pagination.totalPage >
				<span class="front" style = "background-color:red;">下一页</span>
				<#else>
					<a href = "${url}pageNo=${pagination.pageNo+1}">下一页</a>
			</#if> 
			当前页:${pagination.pageNo} 
			总页数:${pagination.totalPage}
			总大小:${pagination.totalCount}
		</div>
		<#else>
	</#if>
</#macro>
 

如果在Freemarker定义了ftl文件自动载入的话,就不需要引入文件了。如果没需要在html里面导入

<#include "/WEB-INF/ftl_lib/page.ftl">

而如果要使用分页的时候调用超级简单:

<@page pagination=pagination countlist= countlist

url = "/huisou/admin/picturecategory/member_toList.action"/>

所有需要分页的地方只需要传递一个参数就可以用分页宏,避免了页面代码臃肿,这也做到了代码重用

 

2:  Freemarker页面标签总结

 

页面自定义数组 ls 为数组名称,可以单引号或者双引号
<#assign ls = ['a', 'b'.....] ?sort >  
判断list是否存在:<#if list ? exists> </#if> 或<#if list ??> </#if>
遍历List:    <#list list as i >${i.name}</#list> 
Js字符转义  <script> alert("${err ? js_string}"); </script>
${i_index} 从0计数-- ${i_index+1}
比较复杂的list  涉及到每几个就换行
第一种实现
<#list  list as a>
	${list.content}	
	<#if (a_index+1)%3=0>
	 <br/>
	<#else>
	</#if>
 </#list>
第二种(推荐Sequence内置的分段器: chunk)
 <#list list?chunk(3) as row> 
	 <div>*
		  <#list row as cell>
	${cell.content}
		  </#list>
	</div>
</#list>
注意:
<#assign seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']> 
   		 
<#list seq?chunk(4) as row> 
	<ul> <li>
   		 	<#list row as cell>${cell_index+1}${cell}</#list>
	</li></ul>
</#list>
==============
<#list seq?chunk(4, '<span style = "background-color:red;">暂时没有数据</span>') as row> 
	<ul> <li>
	<#list row as cell>${cell_index+1}${cell}</#list>
	</li></ul>
</#list> 
注意第一种的index索引和list的数量一致,而下面一种和ul的数量 * chunk数一致
最后一个ul数据不够了,但是它的li个数和chunk数 是一样的
 

 

<!--what is freemarker?-->
<script src="/system_res/js/sysoption.js" type="text/javascript"></script>
 <#list list as a>
 		<tr>
	 		<@s.form  method="post" action="sysoption_edit.action" onsubmit="return checkform(this);">
	          <td align="left">
	          	<input type = "hidden" id = "id"  name = "sys.id" value = "${a.id}"/>${a.id}
	          </td>
	          <td align="left">
	          	<input type = "hidden" name = "sys.name" value = "${a.name}"/>${a.name}
	          </td>
	          <td>
	          		<#if a.setvalue ? length gt 30>
						<input type = "text" style = "width:296px;" name = "myidvalue" value = "${a.setvalue[0..30]}" readOnly=true ondblclick="this.readOnly=false;this.value=token.value;"  title = "${a.setvalue}"/>
						<#else>
						<input type = "text" style = "width:296px;" name = "myidvalue" value = "${a.setvalue}" readOnly=true ondblclick="this.readOnly=false;"/>
					</#if>
					<input type = "hidden"  name = "token"  value = "${a.setvalue}"/>
	          </td>
	          <td><input type = "submit"/></td>
	        </@s.form>	
        </tr>
</#list>


<!--以下是测试数据,优先实现,如果要控制显示的顺序从HTML管理-->
<#--<#include "/WEB-INF/ftl_lib/token_list.ftl">
<@list items=["e.huisou.com", "huisou.com", "dev.huisou.com"]/> 
<@tokenmath.test foo = "myfor" bar = "mybar" baaz = 25*10-100/>  变量的赋值可以是任意正则表达式
-->
<!--test1-->
<#--<#assign user = "Joe Hider">${user}声明变量,并显示--> 
<!--test2-->
<#--
<#import "/WEB-INF/ftl_lib/token_copyright.ftl" as my>
<#assign mail="myother@myother.com">
<@my.copyright date="1999-2002"/> 第一个调用
${my.mail}<br/> 全局变量
${mail} 局部变量,虽然名称都是mail但是Freemarker能区别出来
-->
<!--test3--><#--
<#import "/WEB-INF/ftl_lib/token_copyright.ftl" as my>
${my.mail}<br/>
<#assign mail="update hello micro@update test .com" in my>隐藏全局变量(克隆一份),而不是覆盖, in my只的是token_copyright.ftl文件,mail变量指向克隆过的变量
${my.mail} 
-->
<#--
<#list ["loop 1"] as x> ${x}
	 <#list ["loop 2"] as x>    ${x}    
	 	 	<#list ["loop 3"] as x>     
			 ${x}   
	 </#list>   
	${x} 
</#list> 
${x}
</#list>  内部循环变量隐藏同名的外部循环变量
-->
<#--
<#assign answer=42/> 
${answer?string.currency} 
${answer?string.percent} 
-->


<!--以下是测试数据,优先实现,如果要控制显示的顺序从HTML管理-->
<#--
<#include "/WEB-INF/ftl_lib/token_list.ftl">
<@list items=["e.huisou.com", "huisou.com", "dev.huisou.com"]/> 
<@tokenmath.test foo = "myfor" bar = "mybar" baaz = 25*10-100/>  变量的赋值可以是任意正则表

达式
-->
<!--test1-->
<#--<#assign user = "Joe Hider">${user}声明变量,并显示--> 
<!--test2-->
<#--
<#import "/WEB-INF/ftl_lib/token_copyright.ftl" as my>
<#assign mail="myother@myother.com">
<@my.copyright date="1999-2002"/> 第一个调用
${my.mail}<br/> 全局变量
${mail} 局部变量,虽然名称都是mail但是Freemarker能区别出来
-->
<!--test3-->
<#--
<#import "/WEB-INF/ftl_lib/token_copyright.ftl" as my>
${my.mail}<br/>
<#assign mail="update hello micro@update test .com" in my>隐藏全局变量(克隆一份),而不是覆盖

, in my只的是token_copyright.ftl文件,mail变量指向克隆过的变量
${my.mail} 
-->
<#--
<#list ["loop 1"] as x> ${x}
	 <#list ["loop 2"] as x>    ${x}    
	 	<#list ["loop 3"] as x>     
	 		 ${x}   
	 	</#list>   
	${x} 
	</#list> 
	${x}
</#list>  内部循环变量隐藏同名的外部循环变量
-->
<#--
<#assign answer=42/> 
${answer?string.currency} 
${answer?string.percent} 
-->
分享到:
评论

相关推荐

    sitemesh和freemarker结合自我总结

    **注意**:为了让Freemarker能识别并使用Struts2提供的标签,需要在`web.xml`中配置相应的过滤器。 - **Struts.xml配置**:定义不同业务场景的结果视图。 ```xml &lt;result name="success" type="freemarker"&gt;/...

    freemarker自定义分页标签宏

    总结起来,FreeMarker自定义分页标签宏的实现涉及到前端模板的宏定义与调用,以及后端的数据处理和链接生成。通过这种方式,我们可以创建出灵活且可复用的分页组件,方便地应用于各种项目中。理解并熟练掌握宏的使用...

    Struts2、Spring、Freemarker自定义标签

    总结一下,Struts2、Spring和Freemarker的组合为Java Web开发提供了强大的工具集,涵盖了MVC模式的各个方面。它们的自定义标签功能则进一步增强了框架的灵活性,使得开发者可以按照项目需求定制解决方案。在实际工作...

    Freemarker 教程(总结)

    FreeMarker会忽略FTL标签内的空白字符,且`, `/`和指令之间不允许有空格。 ### 插值规则: Freemarker的插值有两种类型: 1. 通用插值 `${expr}`:根据表达式的结果类型转换为相应的输出。 - 字符串值:直接输出...

    Freemarker语法总结

    Freemarker语法总结 Freemarker是一种基于模板的模板引擎,主要用来生成静态 HTML 页面。FreeMarker 模板文件由四个部分组成:文本、注释、插值和 FTL 指令。 一、文本 文本是 Freemarker 模板文件的直接输出部分...

    超强freemarker使用总结,有示例有讲解,可做快速查询手册!!

    ### Freemarker 使用总结与详解 #### 一、Freemarker 概述 Freemarker 是一种用于生成动态页面的模板引擎。它不依赖任何 Web 容器,可以在任何 Java 应用程序中使用。Freemarker 的核心优势在于其简单易学且功能...

    JSTL常用标签总结

    本文将对JSTL中常用的标签进行总结。 首先,标签主要用于输出数据内容。在JSP中,它用于显示变量值、请求参数等信息。比如,如果我们想输出一个名为"name"的参数值,我们可以使用如下代码:${param.name}" default=...

    Spring配置Freemarker视图解析器,前台页面全部使用freemarker渲染

    Freemarker还支持宏、函数、自定义标签库等功能,可以极大地增强模板的灵活性和可复用性。 在实际应用中,控制器层会将模型数据传递给视图,如下所示: ```java @GetMapping("/users") public String getUsers...

    freemark 自定义标签 总结

    本篇文章将对Freemarker自定义标签进行深入的总结。 1. **自定义标签基础** 自定义标签在Freemarker中被称为`Custom Tags`,它们通过`&lt;@...&gt;`语法来调用。这些标签通常是由Java代码实现的,它们可以处理复杂的逻辑...

    freemarker实现一行两列算法

    Freemarker的核心功能是将数据模型与表现层分离,使得开发者能够更专注于业务逻辑,而设计者则专注于页面布局。 #### 二、问题背景 假设我们有一个列表,需要将其按照一行两列的方式进行排列,即每两列一个单元格...

    freemarker的api

    4. **自定义函数和标签**:Freemarker支持自定义函数(`TemplateMethodModelEx`)和标签库(`TemplateDirectiveModel`),你可以扩展Freemarker的功能,使其更符合项目需求。 三、模板语法 Freemarker的模板语法...

    freemarker的分页功能

    总结来说,Freemarker的分页功能实现了在Web应用中高效展示大量数据的需求,通过合理设计后端逻辑和前端模板,可以提供既美观又实用的用户界面。同时,关注性能和安全性的细节,将有助于构建更加健壮的Web应用程序。

    FreeMarker通用的分页

    - `class`:`&lt;a/&gt;`标签的类名。 #### 2. 分页逻辑 宏`genPagination`的内部逻辑涉及以下关键步骤: - **计算显示范围**:通过`halfPage`变量计算出显示页码的中心位置,从而决定显示哪些页码。如果当前页小于等于...

    freemarker总结

    JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: &lt;#if condition&gt;... &lt;#elseif condition&gt;... &lt;#elseif condition&gt;......

    freemarker-2.3.23.zip

    总结来说,这个"freemarker-2.3.23.zip"包提供了一个Java环境下的FreeMarker库,可以结合Apache POI来实现对Word文档的动态操作,如替换和插入文字、图片及表格。通过这种方式,开发者可以自动化处理大量Word文档,...

    freemarker概述

    这样的设计允许设计师专注于页面布局和样式,而程序员则关注数据的获取和处理。 #### 六、总结 FreeMarker是一个强大而灵活的模板引擎,它提供了丰富的功能和简便的使用方式,适用于广泛的场景,无论是Web开发还是...

    FreeMarker模板基本语法

    **FreeMarker**是一种强大的、基于Java的模板引擎,主要用于动态生成HTML页面,但也支持其他类型的文本格式(如XML、JavaScript、电子邮件等)。它通过将数据模型与表现层分离的方式,使得Web应用程序更加模块化且...

    Struts2与FreeMarker模板

    通过将Struts2的模型数据传递给FreeMarker模板,前端开发人员可以使用FreeMarker提供的丰富的模板标签和函数来渲染页面。 #### 配置Struts2与FreeMarker 在Struts2中使用FreeMarker之前,首先需要进行相应的配置。...

    freemarker生成html

    Freemarker提供了丰富的标签库,用于控制逻辑和数据处理。其中一些常用标签包括: - `#foreach`:循环遍历集合或数组。 - `#if`:条件判断。 - `#set`:变量赋值。 - `#list`:处理列表。 - `#include`:包含其他...

Global site tag (gtag.js) - Google Analytics