`

freemarker空值的多种处理方法

 
阅读更多
默认情况下,freemarker的变量必须有值,如果没有被赋值的变量在页面上使用就会抛出异常,出错的信息都会显示在页面上。 
解决办法:

方法一、我们可以在页面上使用freemarker变量时 以 ${xxx?if_exists} 来处理空值的情况,或采用默认值的方法避免此类问题。但每个freemarker变量都这样处理确实比较让人心烦,请看以下方法。
 
方法二、在类路径下 加入 freemarker.properties 文件,里面配置 classic_compatible=true。
 
方法三、通过freemarker.template.Configuration的 config.setClassicCompatible(true);通过源码我们看到,其实方法二、方法三是思想是一致的,只是实现方法不同而已。如果应用中已经存在了 freemarker.properties 并配置了其他的属性,可以在这里配置,否则推荐使用方法三,毕竟没有每个应用的配置文件实在是都够多了。
 
方法四、在ftl文件内引入 <!--#setting classic_compatible=true-->。
 
其他关于在spring中的配置这里就省略。现在的项目中没有用到。
 
总结:方法四是需要在每个需要这样处理的页面都要引入的,比较麻烦,、还是选择使用 方法二、方法三好了。但是方法二、方法三也不是万能的。例如我在action中定义一个MyBean类的对象为 myBean,MyBean中有Comp属性。在页面上就要 用如下语句使用:${myBean.comp},这里myBean可能为null,comp也可能为null。这时候 就要使用方法一了,${(myBean.comp)!} 或 ${(myBean.comp)?if_exists}。

分享到:
评论

相关推荐

    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