struts2标签与freemarker标签--语法区别 下载本文

struts2标签与freemarker标签语法区别

一、 取值

1、 一般取值

struts2:

freemarker:

${alterOrder.name?if_exists} 或 ${alterOrder.name?default('')} ?if_exists的意思:表示如果alterOrder.name的值存在就显示。 类似 if(xxx!=null) { 显示值 }

?default('')的意思:表示如果alterOrder.name的值存在就显示,不存在则显示空字符串(default括号里的值),类似 xxx!=null? xxx: 给个默认值

值得注意的是,为什么要加上 ?if_exists或?default('')呢?不加也是可以的,如${alterOrder.name}。但会有一个隐患,当alterOrder.name 为null的时候,页面会直接报错。这也是freemarker最大的不便。

然而这并不影响我们对它的喜爱!在使用的时候加个判断?if_exists,或者给个默认值?default('默认值')就可以了

2、 日期取值

struts2:

<#if alterOrder.replyDate?exists>${alterOrder.rep

lyDate?datetime} ---datetime: 会格式化成 yyyy-MM-dd HH:mm:ss ; date:会格式化成 yyyy-MM-dd

3、 数值取值

struts2:

4、 map取值

struts2:

value='alterTypeDictMap[alterOrder.alterType].name'/>

freemarker:

<#if alterOrder.alterType?exists>${alterTypeDictMap.get(alterOrder.alterType).name} ---前提是

alterTypeDictMap对象也存在,否则要在外边if上多加判断条件,如

<#if alterOrder.alterType?exists&& alterTypeDictMap?exists>

5、 boolean取值

struts2:

\ freemarker:

true<#else>false\

6、 静态常量、静态方法取值

struts2:

value=\ --静态常量

value=\\ --静态方法

freemarker:

${stack.findValue('@com.hz.platform.fm.core.consta

nt.FlowConstant@STATUS_NO_REPORT')} --静态常量

${stack.findValue('@com.hz.platform.sys.syslogin.context.SysLoginContext@getLoginUserName()')} --静态方法

7、 项目根目录

strtus2:

<%=request.getContextPath()%>/ 或

freemarker:

${request.contextPath}/

二、 判断

1、if判断

strtus2:

test=\

//some code...

freemarker: <#if alterOrder.approvalResult> //some code...

2、if判断对象不为空

strtus2:

test=\flowStatus!=null\ freemarker:

<#if alterOrder.flowStatus?exists>

3、if...else判断

strtus2:

test=\

//some code...

//some code...

freemarker: <#if alterOrder.approvalResult>

//some code...