`

freemarker空值的多种处理方法

阅读更多

空值处理

${empty}
如果empty标签没有在servlet中添加key或者值为null,会报错 empty Value Expression newTag is undefined。
有人说这是个好的控制错误的机制,但本人不这么认为,因为空值太常见了,谁知道什么时候里面就成空值了?每个变量理论上都有可能。
难道每个变量都要加入一个判断?就像struts中丑陋的<empty>标签?既然是模板引擎,就要灵活,何必来那么多限制?
还好,freemarker至少提供了解决办法,否则我只好选择其它引擎了。
freemarker中空值的多种处理方法:
1.按照freemarker的规范,老老实实的判断是否有空值,有空值怎么处理。这在某种时候是有用的。格式:${empty!"EmptyValue of fbysss"}
比如值为空时,你可以给出一个友好的说明,但是很多的变量都要这么说明,未免太麻烦了。
2.<#escape x as x!""></#escape>可以对所有的变量进行空值处理,这里是全部替换为空字符串。当然也可以替换为其它字符串。
如果其中某些变量不需要这种替换,可以加入<#noescape></#noescape>标签。
3.属性配置方法:
配置classic_compatible=true可以满足一般需要。默认情况变量为null则替换为空字符串,如果需要自定义,写上${empty!"EmptyValue of fbysss"}的形式即可
a.通过Configuration设置。Configuration cfg = new Configuration(); cfg.setClassicCompatible(true);//设置属性
b.通过Eviroment设置。
   Environment env = template.createProcessingEnvironment(root, out);
   env.setClassicCompatible(true);
c.通过ftl设置:在ftl前加入<!--#setting classic_compatible=true-->,
d.通过Spring配置文件设置
<bean id="freemarkerConfig"
    class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  <property name="freemarkerSettings">
    <props>
      <prop key="classic_compatible">true</prop>
    </props>
  </property>
</bean>
e.class目录下添加freemarker.properties文件:加入classic_compatible=true
(需要struts2或spring)

举一反三,其他属性也可以用类似方法进行设置。

分享到:
评论

相关推荐

    freemarker模板

    3. **内置函数**: FreeMarker内置了多种函数,如`length()`、`escape_html()`等,用于处理字符串、日期等数据。例如,`${list.length()}`可获取列表的长度,`${string?html}`可将字符串转义以防止XSS攻击。 4. **...

    初试FreeMarker模板的一些问题

    FreeMarker提供了多种指令,如`&lt;#assign&gt;`用于定义变量,`&lt;#include&gt;`用于包含其他模板,`&lt;#function&gt;`定义函数或方法。宏是一种可重用的模板片段,可以在多个地方调用,有助于代码复用和组织。 4. **模板配置** ...

    FreeMarker基础语法

    FreeMarker提供了多种方式来访问变量。例如,可以通过`$variable`的方式直接访问变量,或者使用`variable`来访问。 #### 隐式值 当变量未被定义时,FreeMarker会默认返回一个隐式值。可以通过设置`default`关键字来...

    深入浅出FreeMarker(一)-基础教程.pdf

    同时,它支持多种方式加载模板,例如从文件系统、数据库等,并且可以自定义宏和函数,使开发更加灵活。 然而,FreeMarker也有其缺点。例如,其在Eclipse中的代码格式化插件不够完善,但IntelijIDEA9下有较好的插件...

    freemarker教程

    Freemarker提供了多种方式进行条件判断,包括`&lt;#if&gt;`语句和`&lt;#switch&gt;`语句。 **`&lt;#if&gt;`条件判断**: - `&lt;#if condition&gt;` - `&lt;#elseif condition2&gt;` - `&lt;#elseif condition3&gt;` - `&lt;#else&gt;` - `&lt;/#if&gt;` **示例**...

    java Freemarker页面静态化实例详解

    - **数据转换**:Freemarker提供了多种内置转换,如货币格式 `${price?string.currency}` 和百分比格式 `${price?string.percent}`。 - **处理空值**: - `?default`:如果变量为null,则显示默认值,如`${...

    freemark开发指南

    - **字符串处理**:Freemarker提供了多种字符串操作的内置方法。 - **sequences和hashes初始化**:在模板中初始化序列和哈希结构。 - **注释**:使用`&lt;!-- --&gt;`进行模板注释。 4. **Freemarker在Web开发中的注意...

    FreeMaker API CHM

    5. **内置函数**: FreeMarkup 提供了丰富的内置函数,如`default`、`length`、`escape`等,用于处理变量和数据,如空值处理、字符串长度计算和数据转义等。 6. **模板配置**: 开发者可以通过`Configuration`类来...

    freemark开发指南(入门)

    - **字符串处理**:Freemarker提供了一些内置的字符串处理方法,如`substring`、`trim`等。 - **初始化Sequences和Hashes**:可以在模板中动态创建并初始化Sequences和Hashes。 - **注释**:可以使用`&lt;!-- --&gt;`或...

    4ftl数值计算和默认value以及value转换1

    FTL 提供了多种日期和时间的处理方法,如 `date`, `time`, 和 `datetime`。例如,可以使用 `${myDate?string('yyyy-MM-dd')}` 将日期对象格式化为指定格式的字符串。 6. **字符串操作**: - **查找索引**:`index...

    struts2中文教程

    2. 空值处理拦截器:自动处理null值,避免空指针异常。 3. 日志拦截器:记录请求信息,便于调试和监控。 4. Exception处理拦截器:统一处理全局异常,提供友好的错误页面。 四、Struts2的注解 除了XML配置,...

    jeecms v9.3 正式版 安装包.zip

    11、工作流节点空值处理 12、手机模板在静态页生成的情况下url错误处理 13、新增百度主动推送 14、内容删除同时删除静态页(含FTP) 15、栏目和内容静态化调整成只生成前10页 16、activation jcaptcha ...

    自整理Java关于基础和框架的面试题

    - 使用`PreparedStatement`的`addBatch()`和`executeBatch()`方法批量处理数据。 ##### Oracle分页 - 使用`ROWNUM`关键字进行分页。 ##### Oracle的基本数据类型 - NUMBER、VARCHAR2、DATE等。 ##### id、rowid、...

Global site tag (gtag.js) - Google Analytics