freemarker的基本语法(二)

本文详细介绍Freemarker模板引擎的环境搭建步骤,并通过多个示例演示如何在实际项目中应用Freemarker来处理数据与模板之间的关系,包括对象输出、列表遍历、条件判断等功能。
第一步:Freemarker环境搭建

创建FMDemo类

//第一步:实例化Freemarker的配置类
Configuration conf = new Configuration();
//第二步:给配置类设置路径   
String dir = "C:\\Users\\lx\\workspaces-new\\freemarker\\ftl\\";

conf.setDirectoryForTemplateLoading(new File(dir));

Template template = conf.getTemplate("freemarker.ftl");

//第三步:处理模板及数据之间 关系 将数据与模板合成一个html
//第四步: 输出html
Writer out = new FileWriter(new File(dir + "hello.html"));
// 定义数据
Map root = new HashMap();
root.put("world", "世界你好");
//执行生成
template.process(root, out);
//关流
out.flush();
out.close();
创建页面模板ftl/freemarker.ftl
${world}
第二步:应用例子测试
例子1 : 对象输出
//定义数据
Map root = new HashMap();
Person p  = new Person();
Map root = new HashMap();
root.put("person",p);
//页面
${person.id}=${person.name}
例子2 : 遍历List
//定义数据
Map root = new HashMap(); 
List<String> persons = new ArrayList<String>();
persons.add("范冰冰");
persons.add("李冰冰");
persons.add("何灵");
root.put("persons", persons);
//
    <#list persons as person>
    ${person}
    </#list>
//页面
<#list persons as p>
${p.id}/${p.name}
</#list>


例子3 : 遍历Map
//定义数据
Map root = new HashMap(); 
Map mx = new HashMap();
mx.put("fbb","范冰冰");
mx.put("lbb","李冰冰");
root.put("mx",mx);
//页面
第一种写法:
${mx.fbb}/${mx.lbb}
第二种写法:
<#list mx?keys as k>
   ${mx[k]}
</#list>


例子4 : 遍历List<Map>
//定义数据
Map root = new HashMap();


List<Map> maps = new ArrayList<Map>();
Map pms1 = new HashMap();
pms1.put("id1", "范冰冰");
pms1.put("id2", "李冰冰");
Map pms2 = new HashMap();
pms2.put("id1", "曾志伟");
pms2.put("id2", "何炅");
maps.add(pms1);
maps.add(pms2);
root.put("maps", maps);

//页面
第一种写法:
<#list maps as m>
${m.id1}/${m.id2}
</#list>

第二种写法:
<#list maps as m>
<#list m?keys as k>
${m[k]}
</#list>
</#list>


例子5 : 获取当前选代的索引
//定义数据
Map root = new HashMap(); 
List<String> persons = new ArrayList<String>();
persons.add("范冰冰");
persons.add("李冰冰");
persons.add("何灵");
root.put("persons", persons);

//页面
<#list persons as p>
${p_index}
</#list>


例子6 : 在模版中进行赋值
1:<#assign x=0 />
${x}
2:<#assign x="${world}" />
${x}
3:<#assign x>世界太好了</#assign>
${x}
4:<#assign x>
   <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
      ${n}
   </#list>
</#assign>
${x}


例子7 : #if
1:==   !=
<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
<#if n != "星期一">
       ${n}
</#if>
</#list>


2:按索引
<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
<#if n_index != 0>
   ${n}
</#if>
</#list>


3: ||   &&
<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
<#if (n_index == 1) || (n_index == 3)>
   ${n}
</#if>
</#list>


例子8 : #else
<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
<#if (n_index == 1) || (n_index == 3)>
       ${n} --红色
<#else>
${n} --绿色
</#if>
</#list>


例子9 : 时间格式
//定义数据
Map root = new HashMap();
root.put("cur_time",new Date());
//页面
1:date
${cur_time?date}
2:datetime
${cur_time?datetime}
3:time
${cur_time?time}


例子10 : null处理
//定义数据
Map root = new HashMap();
root.put("val",null);

//页面
${val!"我是null!"}


例子11 : 宏定义
1:
<#macro table u>
${u} 
</#macro>
<@table u=8 />
2:
<#macro table u>
   ${u}
<#nested/>
</#macro>
<@table u=8 >这是8</@table>


【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
先看效果: https://pan.quark.cn/s/3756295eddc9 在C#软件开发过程中,DateTimePicker组件被视为一种常见且关键的构成部分,它为用户提供了图形化的途径来选取日期与时间。 此类控件多应用于需要用户输入日期或时间数据的场景,例如日程管理、订单管理或时间记录等情境。 针对这一主题,我们将细致研究DateTimePicker的操作方法、具备的功能以及相关的C#编程理念。 DateTimePicker控件是由.NET Framework所支持的一种界面组件,适用于在Windows Forms应用程序中部署。 在构建阶段,程序员能够通过调整属性来设定其视觉形态及运作模式,诸如设定日期的显示格式、是否展现时间选项、预设的初始值等。 在执行阶段,用户能够通过点击日历图标的下拉列表来选定日期,或是在文本区域直接键入日期信息,随后按下Tab键或回车键以确认所选定的内容。 在C#语言中,DateTime结构是处理日期与时间数据的核心,而DateTimePicker控件的值则表现为DateTime类型的实例。 用户能够借助`Value`属性来读取或设定用户所选择的日期与时间。 例如,以下代码片段展示了如何为DateTimePicker设定初始的日期值:```csharpDateTimePicker dateTimePicker = new DateTimePicker();dateTimePicker.Value = DateTime.Now;```再者,DateTimePicker控件还内置了事件响应机制,比如`ValueChanged`事件,当用户修改日期或时间时会自动激活。 开发者可以注册该事件以执行特定的功能,例如进行输入验证或更新关联的数据:``...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值