用freemarker定义宏实现自定义公用控件
参考文章:
定义一个基本的文本框:传入参数为:resourceName idName resourceVal="" idVal="" classVal="",其中resourceName ,idName为必填, resourceVal="" idVal="" classVal="" 分别为选填,其中必填都作为空间的 name,选填的都作为结果值,具体的见代码:
html中 macro自定义如下:
<#macro txtResource resourceName idName resourceVal="" idVal="" classVal="">
<input type="text" name="${resourceName}" value="${(resourceVal)!}" class="${(classVal)!}" readonly="readonly"
style="cursor:pointer" /> <a class="xm_ablue" href="javascript:clearDicTree('${resourceName}','${idName}')">清空</a>
<input type="hidden" name="${idName}" value="${(idVal)!}"/>
<#-- 绑定输点击清空时的事件-->
<script>
function clearDicTree(resourceName,idName)
{
$("input[name='"+resourceName+"']").val('');
$("input[name='"+idName+"']").val('');
}
</script>
</#macro>
调用macro 控件:
<@txtResource resourceName="parentName" idName="parentId" resourceVal="张三" idVal="1" classVal="icon2"/>
界面展示效果
点击“清空”按钮,则清空文本框中的内容;点击文本框中js也可以写在控件定义的 html中
3.freemark中遍历Map:typeMap,todoMap 都是map,他们的key相同
<#if typeMap?exists>
<#list typeMap?keys as key>
<tr>
<td colspan="4">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="s_todoin">
<#assign type = typeMap[key] />
<tr>
<th colspan="4"><div class="s_todotit s_todotitup" name="div_${type.businessCode}" onclick="javascript:clickTodoType('${type.businessCode}');">${type.name}</div></th>
</tr>
<#if todoMap?exists>
<#assign todoList =todoMap[key] />
<#list todoList as item>
<tr name="tr_${type.businessCode}">
<td width="49%" class="s_todotd"><a href="${item.refUrl!}" target="_blank" title="${item.sheetTitle!}"><#if item.sheetTitle?? && ""!=item.sheetTitle>${item.sheetTitle}<#else>未知标题</#if></a></td>
<td width="15%">${item.nodeName}</td>
<td width="12%">${item.createUserName}</td>
<td width="24%" >${item.createTime['time']}</td>
</tr>
</#list>
</#if>
</table>
</td>
</tr>
</#list>
</#if>
4.freemark中遍历多维数组;
<#list oftenList as firstMenu>
<div class="modle_usualcbw" name="often">
<div class="modle_usualtcb" name="module">
<input type="checkbox" value="${firstMenu.menuId}" <#if firstMenu.url?? && ""!=firstMenu.url>name="hasurl"</#if> <#if firstMenu.userId??>checked="checked"</#if>/>${firstMenu.name}
</div>
<#if firstMenu.children?? && (firstMenu.children?size>0)>
<#assign secondMenus=firstMenu.children>
<div class="modle_usualtcb2ws">
<#list secondMenus as secondMenu>
<div class="modle_usualtcb2w" name="menu">
<div class="modle_usualtcb2" name="secondMenu">
<input type="checkbox" value="${secondMenu.menuId}" <#if secondMenu.url?? && ""!=secondMenu.url>name="hasurl"</#if> <#if secondMenu.userId??>checked="checked"</#if>/>${secondMenu.name}
</div>
<#if secondMenu.children?? && (secondMenu.children?size>0)>
<#assign thirdMenus=secondMenu.children>
<div class="modle_usualcb" name="thirdMenu">
<ul>
<#list thirdMenus as thirdMenu>
<li>
<input type="checkbox" value="${thirdMenu.menuId}" <#if thirdMenu.url?? && ""!=thirdMenu.url>name="hasurl"</#if> <#if thirdMenu.userId??>checked="checked"</#if>/>${thirdMenu.name}
</li>
</#list>
</ul>
</div>
</#if>
</div>
</#list>
</div>
</#if>
</div>
</#list>
5.freemark中数字和字符的格式:保留小数点后2位
<input name='currentcost' value='#{(project.progress?default(0))*(project.budgetContractA?default(0))/100;M2}' readonly='readonly'>
具体见:http://talentkep.iteye.com/blog/510756
用freemarker定义宏实现自定义公用控件的更多相关文章
- Android Studio自定义组合控件
在Android的开发中,为了能够服用代码,会把有一定共有特点的控件组合在一起定义成一个自定义组合控件. 本文就详细讲述这一过程.虽然这样的View的组合有一个粒度的问题.粒度太大了无法复用,粒度太小 ...
- 安卓自定义组合控件--toolbar
最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...
- Android自定义控件之自定义组合控件
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
- C# DataGridView自定义分页控件
好些日子不仔细写C#代码了,现在主要是Java项目,C#.Net相关项目不多了,有点手生了,以下代码不足之处望各位提出建议和批评. 近日闲来无事想研究一下自定义控件,虽然之前也看过,那也仅限于皮毛,粗 ...
- 自定义圆形控件 RoundImageView
1.自定义圆形控件 RoundImageView package com.ronye.CustomView; import android.content.Context; import androi ...
- 自定义圆形控件RoundImageView并认识一下attr.xml
今天我们来讲一下有关自定义控件的问题,今天讲的这篇是从布局自定义开始的,难度不大,一看就明白,估计有的同学或者开发者看了说,这种方式多此一举,但是小编我不这么认为,多一种解决方式,就多一种举一反三的学 ...
- DuiLib 自定义识别控件
遇到一个断点无法识别自定义的控件,运气比较好,一搜就搜出来了: 参考地址:http://www.bkjia.com/ASPjc/992050.html 主要是这个函数: CControlUI* CDi ...
- iOS开发UI篇—Quartz2D(自定义UIImageView控件)
iOS开发UI篇—Quartz2D(自定义UIImageView控件) 一.实现思路 Quartz2D最大的用途在于自定义View(自定义UI控件),当系统的View不能满足我们使用需求的时候,自定义 ...
- (九)ASP.NET自定义用户控件(2)
http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 用户控件 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗 ...
随机推荐
- JSP自定义标签——调用数据库(通过id号搜索相关信息)
一.创建新表(假设在master数据库下新建) 二.连接数据库 开始-->控制面板-->管理工具-->数据源-->系统DSN-->添加-->SQL Server-- ...
- UE4 Android相对路径转绝对路径方法笔记
在windows端用FPaths::ConvertRelativePathToFull可以将相对路径转成绝对路径. 在Andoird端,就麻烦些.可模仿UE4源码中AndroidFile.Cpp转换相 ...
- 最适合和最不适合新手使用的几款 Linux 发行版
大多数知名的Linux发行版都属于"比较容易使用"这一类.一些观察人士可能会驳斥这个观点,但事实上,说到Linux,大多数并非从事IT或软件开发工作的人会被最容易的使用体验所吸引. ...
- Xml 序列化
1 XML序列化只能序列化对象的公有属性,并且要求对象有一个无参的构造方法,否者无法反序列化. 2 [Serializable]和[NonSerialized]特性对XML序列化无效!所以使用XML序 ...
- Record:Handle onClick for our custom LinearLayout for Gallery-like HorizontalScrollView
Handle onClick for our custom LinearLayout for Gallery-like HorizontalScrollView The post "Im ...
- HDU 5512
http://acm.hdu.edu.cn/showproblem.php?pid=5512 gcd(a,b)的位置都是可以选的,之后判断一下奇偶 #include <iostream> ...
- 让LinqToSQL使用Web.Config中的链接字符串(修改Settings.Designer.cs)
[global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.Debug ...
- ife2015-task2
html部分: <!DOCTYPE html><html><head lang="en"> <meta charset="UTF ...
- height与line-height的深入理解及应用
转载:原文地址:http://www.zhangxinxu.com/wordpress/?p=384 一.前言 前两天在腾讯ISD团队博客上看到一篇翻译的文章"深入理解css 行高" ...
- 安装Fedora 24后必要的设置
安装Fedora 24后必要的设置 导读 Fedora 是一个 Linux 发行版,是一款由全球社区爱好者构建的面向日常应用的快速.稳定.强大的操作系统.它允许任何人自由地使用.修改和重发布,无论现在 ...