struts2.0 标签+ftl标签

本文详细介绍了在FTL模板引擎中使用的后台方法、时间格式化、判断长度并截取、列表与映射操作等核心技术,以及如何进行文件上传与下载的实现流程。同时提供了代码示例,帮助开发者深入理解并应用这些技术。
直接调用后台方法代码 
<PRE class=ftl name="code">默认两种用法   
${!("")}   
${default("")}</PRE>   
<@s.property value="%{getPieceByType(type)}"/>   
getPieceByType为方法名,type为值  

Ftl代码默认两种用法   ${!("")}   ${default("")}  默认两种用法 
${!("")} 
${default("")} 
<@s.property value="%{getPieceByType(type)}"/> 
getPieceByType为方法名,type为值 

时间格式化的方法代码 
最好加上 判断下c时候存在   
<#if c??>   
${c.addtime?string("yyyy-MM-dd HH:mm:ss")   
</#if>  

最好加上判断下c时候存在 
<#if c??> 
${c.addtime?string("yyyy-MM-dd HH:mm:ss") 
</#if>  

判断长度并截取代码 
<#if c.titleH1??>   
<#if c.titleH1?length lt 33>   
${c.titleH1}   
action 中   
配置    
private String inputPath;    
private HttpServletResponse servletResponse;    

public void setServletResponse(HttpServletResponse arg0) {   
this.servletResponse = arg0;    
}   

public HttpServletResponse getServletResponse() {   
return servletResponse;   
}    

public String formguideDownloads() throws Exception {   
formguide.setTemplateId(formguide.getTemplateId()+".jsp");     
return SUCCESS;         
}   

xml中配置   
<action name="formguideDownloads" class="com.jcauto.cms.action.FormguideAction" method="formguideDownloads">       
<result name="success" type="stream">       
<param name="contentType">text/plain;charset=utf-8</param>     
<param name="inputName">inputStream</param>         
<param name="contentDisposition">attachment;filename="${formguide.templateId}"</param>     
<param name="bufferSize">4096</param>       
</result>     
</action>      

页面上   
formguide/formguideDownloads.action?formguide.templateId=${form.templateId?if_exists}&inputPath=${fileUrlFileName?if_exists}${form.templateId?if_exists}.jsp" <#else>   
${c.titleH1[0..32]}...   
</#if>   
</#if>   
注意length是从0开始算所以如果想截取33位就使用0..32就可以了  

<#if c.titleH1??> 
<#if c.titleH1?length lt 33> 
${c.titleH1} 
action 中 
配置 
private String inputPath; 
private HttpServletResponse servletResponse; 

public void setServletResponse(HttpServletResponse arg0) { 
this.servletResponse = arg0; 


public HttpServletResponse getServletResponse() { 
return servletResponse; 


public String formguideDownloads() throws Exception { 
formguide.setTemplateId(formguide.getTemplateId()+".jsp");  
return SUCCESS;      


xml中配置 
<action name="formguideDownloads" class="com.jcauto.cms.action.FormguideAction" method="formguideDownloads">    
<result name="success" type="stream">    
<param name="contentType">text/plain;charset=utf-8</param>  
<param name="inputName">inputStream</param>      
<param name="contentDisposition">attachment;filename="${formguide.templateId}"</param>  
<param name="bufferSize">4096</param>    
</result>  
</action>   

页面上 
formguide/formguideDownloads.action?formguide.templateId=${form.templateId?if_exists}&inputPath=${fileUrlFileName?if_exists}${form.templateId?if_exists}.jsp" <#else> 
${c.titleH1[0..32]}... 
</#if> 
</#if> 
注意length是从0开始算所以如果想截取33位就使用0..32就可以了 

List-map使用代码 
ftl.list   
<#list List as list>   
${list}   
</#list>   
list_index取出行号索引从0开始                 
formguideList?size 可以判断list大小   
这里多说一句有很多list中属性的用法不一一列举,大家可以查下ftl API    
ftl.map   
<#list Map?keys as s>   
${Map[s]}   
</#list>   

s.list   
<@s.iterater value="List" var=list>   
</@s.iterater>   
s.if   
<@s.if>   
</@>   
<@s.else>   
</@>   
ftl.if   
<#if>   
<#else>   
</#if>  

ftl.list 
<#list List as list> 
${list} 
</#list> 
list_index取出行号索引从0开始              
formguideList?size 可以判断list大小 
这里多说一句有很多list中属性的用法不一一列举,大家可以查下ftl API 
ftl.map 
<#list Map?keys as s> 
${Map[s]} 
</#list> 

s.list 
<@s.iterater value="List" var=list> 
</@s.iterater> 
s.if 
<@s.if> 
</@> 
<@s.else> 
</@> 
ftl.if 
<#if> 
<#else> 
</#if> 

上传代码 
<form actoin="${path}/piece/findPiece.action" name="form1" method="Post" enctype="multipart/form-data">    
<s:file name="sfile"/>   
</form>   
后台action中配置   
File sfile;   
String sfileName;   
String sfileType;  

<form actoin="${path}/piece/findPiece.action" name="form1" method="Post" enctype="multipart/form-data"> 
<s:file name="sfile"/> 
</form> 
后台action中配置 
File sfile; 
String sfileName; 
String sfileType; 

下载代码 
前台   
<a href="${path}/formguide /formguideDownloads.action?formguide.templateId=${form.templateId?if_exists}& amp;inputPath=${fileUrlFileName?if_exists}${form.templateId?if_exists}.jsp"& gt;下载</a> |     

后台   
private HttpServletResponse servletResponse;     
private String inputPath;    
public void setServletResponse(HttpServletResponse arg0) {   
this.servletResponse = arg0;    
}   

public HttpServletResponse getServletResponse() {   
return servletResponse;   
}   
public String formguideDownloads() throws Exception {   
formguide.setTemplateId(formguide.getTemplateId()+".jsp");     
return SUCCESS;         
}   

public InputStream getInputStream() throws Exception {    
return ServletActionContext.getServletContext().getResourceAsStream(   
inputPath);     
}   

xml   
<action name="formguideDownloads" class="com.jcauto.cms.action.FormguideAction" method="formguideDownloads">       
<result name="success" type="stream">       
<param name="contentType">text/plain;charset=utf-8</param>     
<param name="inputName">inputStream</param>         
<param name="contentDisposition">attachment;filename="${formguide.templateId}"</param>     
<param name="bufferSize">4096</param>       
</result>     
</action>    

前台 
<a href="${path}/formguide /formguideDownloads.action?formguide.templateId=${form.templateId?if_exists}& amp;inputPath=${fileUrlFileName?if_exists}${form.templateId?if_exists}.jsp"& gt;下载</a> |  

后台 
private HttpServletResponse servletResponse;  
private String inputPath; 
public void setServletResponse(HttpServletResponse arg0) { 
this.servletResponse = arg0; 


public HttpServletResponse getServletResponse() { 
return servletResponse; 

public String formguideDownloads() throws Exception { 
formguide.setTemplateId(formguide.getTemplateId()+".jsp");  
return SUCCESS;      


public InputStream getInputStream() throws Exception { 
return ServletActionContext.getServletContext().getResourceAsStream( 
inputPath);  

xml 
<action name="formguideDownloads" class="com.jcauto.cms.action.FormguideAction" method="formguideDownloads">    
<result name="success" type="stream">    
<param name="contentType">text/plain;charset=utf-8</param>  
<param name="inputName">inputStream</param>      
<param name="contentDisposition">attachment;filename="${formguide.templateId}"</param>  
<param name="bufferSize">4096</param>    
</result>  
</action>    

Ftl中的循环代码 
使用宏标签来循环生成固定的值   
其中local中来定义值   
repeat用来生成   
<#macro repeat count>   
<#local y = "<img src='http://www.jcauto.com.cn/ProConsole/images/star0506.gif' border='0' alt='' width='11' height='11'/>">   
<#list 1..count as x>   
${y} ${count}/${x}: <#nested>   
</#list>   
</#macro>   
<@repeat count=3>${y?default("?")} ${x?default("?")} ${count?default("?")}</@repeat>  

使用宏标签来循环生成固定的值 
其中local中来定义值 
repeat用来生成 
<#macro repeat count> 
<#local y = "<img src='http://www.jcauto.com.cn/ProConsole/images/star0506.gif' border='0' alt='' width='11' height='11'/>"> 
<#list 1..count as x> 
${y} ${count}/${x}: <#nested> 
</#list> 
</#macro> 
<@repeat count=3>${y?default("?")} ${x?default("?")} ${count?default("?")}</@repeat> 

Ftl变量转换代码 
?number转为数字   
?c转为字符串   
?string转为字符串   
?currency(货币)   
?percent(百分比)   
trim 删除字符串首尾空格 ${“  String ”?trim} 结果为String   
split使用指定的分隔符将一个字符串拆分为一组字符串   
<#list “This|is|split”?split(“|”) as s>   
${s}   
</#list>   
${“strabg”?replace(“ab”,”in”)} 结果为string   
${“string”?contains(“ing”)?string} 结果为true   
注意:布尔值必须转换为字符串才能输出   
${“string”?index_of(“in”) 结果为3  
${“string”?index_of(“ab”) 结果为-1  
length返回字符串的长度 ${“string”?length}结果为6  
lower_case将字符串转为小写   
${“STRING”?lower_case}à结果为string   
upper_case将字符串转为大写   
${“string”?upper_case}à结果为STRING   
ends_with 判断某个字符串是否由某个子串结尾,返回布尔值。   
${“string”?ends_with(“ing”)?string} 返回结果为true   
注意:布尔值必须转换为字符串才能输出   
html 用于将字符串中的<、>、&和“替换为对应得&lt;&gt;&quot:&amp   
index_of(substring,start)在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1。   
Start参数用于指定从字符串的那个索引处开始搜索,start为数字值。   
如果start大于字符串长度,则start取值等于字符串长度,如果start小于0, 则start取值为   
${‘str’?substring(0)}à结果为str   
${‘str’?substring(0,1)}à结果为s   

2.cap_first 将字符串中的第一个单词的首字母变为大写。   
${‘str’?cap_first}à结果为Str   

3.uncap_first将字符串中的第一个单词的首字母变为小写。   
${‘Str’?cap_first}à结果为str   

4.capitalize将字符串中的所有单词的首字母变为大写   
${‘str’? capitalize}à结果为STR   
date,time,datetime将字符串转换为日期   
例如:   
<#assign date1=”2009-10-12”?date(“yyyy-MM-dd”)>   
<#assign date2=”9:28:20”?time(“HH:mm:ss”)>   
<#assign date3=” 2009-10-12 9:28:20”?time(“HH:mm:ss”)>   
${date1}à结果为2009-10-12  
${date2}à结果为9:28:20  
${date3}à结果为2009-10-12 9:28:20  

?number转为数字 
?c转为字符串 
?string转为字符串 
?currency(货币) 
?percent(百分比) 
trim 删除字符串首尾空格 ${“  String ”?trim} 结果为String 
split使用指定的分隔符将一个字符串拆分为一组字符串 
<#list “This|is|split”?split(“|”) as s> 
${s} 
</#list> 
${“strabg”?replace(“ab”,”in”)} 结果为string 
${“string”?contains(“ing”)?string} 结果为true 
注意:布尔值必须转换为字符串才能输出 
${“string”?index_of(“in”) 结果为3 
${“string”?index_of(“ab”) 结果为-1 
length返回字符串的长度 ${“string”?length}结果为6 
lower_case将字符串转为小写 
${“STRING”?lower_case}à结果为string 
upper_case将字符串转为大写 
${“string”?upper_case}à结果为STRING 
ends_with 判断某个字符串是否由某个子串结尾,返回布尔值。 
${“string”?ends_with(“ing”)?string} 返回结果为true 
注意:布尔值必须转换为字符串才能输出 
html 用于将字符串中的<、>、&和“替换为对应得&lt;&gt;&quot:&amp 
index_of(substring,start)在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1。
Start参数用于指定从字符串的那个索引处开始搜索,start为数字值。 
如果start大于字符串长度,则start取值等于字符串长度,如果start小于0, 则start取值为 
${‘str’?substring(0)}à结果为str 
${‘str’?substring(0,1)}à结果为s 

2.cap_first 将字符串中的第一个单词的首字母变为大写。 
${‘str’?cap_first}à结果为Str 

3.uncap_first将字符串中的第一个单词的首字母变为小写。 
${‘Str’?cap_first}à结果为str 

4.capitalize将字符串中的所有单词的首字母变为大写 
${‘str’? capitalize}à结果为STR 

date,time,datetime将字符串转换为日期 
例如: 
<#assign date1=”2009-10-12”?date(“yyyy-MM-dd”)> 
<#assign date2=”9:28:20”?time(“HH:mm:ss”)> 
<#assign date3=” 2009-10-12 9:28:20”?time(“HH:mm:ss”)> 
${date1}à结果为2009-10-12 
${date2}à结果为9:28:20 
${date3}à结果为2009-10-12 9:28:20 

宏定义hash内置函数代码 
Hash的内置函数   
1.hash?keys 返回hash里的所有key,返回结果为sequence   

2.hash?values 返回hash里的所有value,返回结果为sequence   
例如:   
<#assign user={“name”:“hailang”, “sex”:“man”}>   
<#assign keys=user?keys>   
<#list keys as key>   
${key}=${user[key]}   
</#list>  

Hash的内置函数 
1. hash?keys 返回hash里的所有key,返回结果为sequence 

2.hash?values 返回hash里的所有value,返回结果为sequence 
例如: 
<#assign user={“name”:“hailang”, “sex”:“man”}> 
<#assign keys=user?keys> 
<#list keys as key> 
${key}=${user[key]} 
</#list>
01、数据简介 出口韧性是地级市在面对外部震荡和压力时,能够承受并迅速适应、应对变化的能力。这种能力体现在地级市经济结构的灵活性、创新能力和竞争力,以及地方政府的政策支持和产业调整能力等多个方面。 城市出口韧性对于城市的经济发展、就业稳定、国际贸易地位以及风险抵御能力等方面都具有重要影响。因此,城市应加强出口韧性的建设,提高应对外部冲击的能力,以推动其经济的可持续发展。 数据名称:地级市-城市出口韧性数据 数据年份:2011-202202、相关数据 代码 年份 地区 城市 省份 城市出口韧性 距离港口的最近距离 最终进口额_百万人民币2 最终出口额_百万人民币2 人均道路面积2 年末金融机构各项贷款余额万元2 地区生产总值万元2 科学支出万元2 地方财政一般预算内支出万元2 城镇居民人均可支配收入元2 固定资产投资2 实际使用外商投资额百万美元2 城镇化率2 外贸依存度 出口贸易 年平均汇率 实际使用外商投资额百万人民币2 外资依存度 金融发展水平 财政投资力度 科学技术水平 出口偏离度 x_地区生产总值万元2 x_城镇化率2 x_人均道路面积2 x_外贸依存度 x_出口贸易 x_出口偏离度 x_金融发展水平 x_城镇居民人均可支配收入元2 x_财政投资力度 x_科学技术水平 x_距离港口的最近距离 x_外资依存度 地区生产总值万元2_sum y_地区生产总值万元2 城镇化率2_sum y_城镇化率2 人均道路面积2_sum y_人均道路面积2 外贸依存度_sum y_外贸依存度 出口贸易_sum y_出口贸易 出口偏离度_sum y_出口偏离度 金融发展水平_sum y_金融发展水平 城镇居民人均可支配收入元2_sum y_城镇居民人均可支配收入元2 财政投资力度_sum y_财政投资力度 科学技术水平_sum y_科学技术水平
内容概要:本文档详细介绍了一个基于Matlab实现的无人机空中通信仿真资源包,系统涵盖了无人机通信、三维路径规划、状态估计与多机协同等多个核心技术模块的仿真代码与案例研究。内容聚焦于无人机在复杂环境下的三维路径规划(如基于遗传算法GA、粒子群算法PSO、动态窗口法DWA等)、无人机姿态与轨迹的状态估计算法(如扩展卡尔曼滤波器EKF、UKF、不变扩展卡尔曼滤波IEKF、粒子滤波PF等),以及无人机通信链路建模与优化,并融合智能优化算法对系统性能进行提升。此外,资源包还拓展至微电网优化、MIMO检测、图像融合、信号处理等相关科研领域,构建了一个以无人机技术为核心、多学科交叉融合的综合性仿真研究体系。; 适合人群:具备一定Matlab编程能力与控制系统基础知识,从事无人机系统设计、无线通信、自动化控制、智能优化算法或相关领域研究的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①开展无人机通信系统建模与性能仿真分析;②实现复杂动态环境中无人机三维路径规划与实时避障;③研究基于多源传感器融合的无人机导航与状态估计方法;④结合智能优化算法提升无人机任务执行效率与系统鲁棒性; 阅读建议:建议读者依据资源包提供的模块化结构系统学习,优先掌握Matlab/Simulink基本仿真技能,重点研读路径规划与状态估计部分的算法实现与代码细节,并通过实际调试与二次开发加深对无人机系统集成与优化策略的理解。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值