FreeMarker3.8中引入了一个非常实用的!功能,在FreeMarker3.8-中,如果要显示类似${user.phone.areacode}的值,需要层层判断是否为NULL,譬如如上的表达式一般在FTL中需要写成<#if user?exists><#if user.phone?exists><#if user.phone.areacode?exists>${user.phone.areacode}},不胜烦琐,而在FreeMarker3.8中可以使用${(user.phone.areacode)!}达到同样的目的。那么如果使用的是FreeMarker3.8-,有什么可选的替代方案呢?下面是我想的一种解决方案
java 代码
-
-
-
- public class EmptyTemplateHashModel implements TemplateHashModel, TemplateScalarModel
- {
- public final static EmptyTemplateHashModel INSTANCE = new EmptyTemplateHashModel();
-
- public TemplateModel get(String n) throws TemplateModelException
- {
- return INSTANCE;
- }
-
- public boolean isEmpty() throws TemplateModelException
- {
- return true;
- }
-
- public String getAsString() throws TemplateModelException
- {
- return "";
- }
- }
-
-
-
-
-
- public class DelegatingTemplateHashModel implements TemplateHashModel
- {
- private TemplateHashModel target;
-
- public DelegatingTemplateHashModel(TemplateHashModel target)
- {
- this.target = target;
- }
-
- public TemplateModel get(String name) throws TemplateModelException
- {
- TemplateModel model = this.target.get(name);
- if (model == null)
- {
- return EmptyTemplateHashModel.INSTANCE;
- }
- if (model instanceof TemplateHashModel)
- {
- return new DelegatingTemplateHashModel((TemplateHashModel) model);
- }
- return model;
- }
-
- public boolean isEmpty() throws TemplateModelException
- {
- return this.target.isEmpty();
- }
- }
分享到:
- 2007-03-10 09:30
- 浏览 3511
- 评论(3)
- 论坛回复 / 浏览 (3 / 3496)
- 查看更多
相关推荐
POI 3.8 版本是该项目的一个稳定发行版,它提供了丰富的API,使得开发者能够在Java环境中方便地读取、写入和修改这些文件。这个全量包包含了以下组件: 1. **poi-3.8-20120326.jar**:这是Apache POI的主要库,提供...
通过深入学习这个"FreeMarker参考手册2[1].3.8.chm",开发者能够掌握FreeMarker的各个方面,从而在实际项目中灵活运用,提高开发效率和代码质量。无论是初学者还是有经验的开发者,都可以从中受益,解决在模板设计和...
SpringMVC 3.8是Spring框架的一个重要版本,它为开发者提供了强大的Web应用程序开发能力。SpringMVC作为Spring框架的一部分,专注于处理HTTP请求和响应,实现模型-视图-控制器(MVC)的设计模式。在SpringMVC 3.8中...
`poi-3.8-20120326.jar`是Apache POI库的一部分,用于读写Microsoft Office格式的文件,如Excel,在需要处理Excel数据的场景中非常有用。 `mysql-connector-java-5.1.21.jar`是MySQL数据库的JDBC驱动,使得Java程序...
在Java EE领域,Struts2、Spring和Hibernate是三大核心框架,它们的整合使用能够构建出高效、灵活的企业级应用程序。本实战项目基于"轻量级Java EE企业应用",通过Struts2作为表现层框架,Spring作为业务层管理器,...
20,freemarker-2.3.20.jar 21,hamcrest-all-1.3.jar 22,hibernate-3.6.10.jar 23,hibernate-jpa-2.0-api-1.0.1.jar 24,hibernate-search-3.4.2.jar 25,hibernate-validator-4.2.0.jar 26,httpclient-4.2.3....
- **功能:** 提供了在JFinal框架中使用FreeMarker的方法。 #### 十二、JFinal架构及扩展 **12.1 概述** - **功能介绍:** JFinal采用了高度模块化的设计,易于扩展和定制。 **12.2 架构** - **架构说明:** ...
- **配置类**:所有JFinal框架的核心配置都集中在`JFinalConfig`类中实现。 - **配置顺序**:按照特定的顺序执行各个配置方法,以确保配置的正确性和有效性。 **2.2 configConstant(Constants me)** - **常量配置**...
### JFinal 2.2版本开发手册知识点概览 #### 一、极速体验:Model与Bean合体 **1.1 极速体验Generator** - **功能简介**:JFinal 提供了一个强大的代码生成工具(Generator),能够快速生成基于特定数据库表的 ...
- 下载 JFinal 最新版本的库文件,将其加入项目的 classpath 中。 - 可以通过 Maven 或者直接下载 jar 包的方式进行。 **3. 修改 web.xml** - 在项目的 web.xml 文件中配置 JFinal 的前端控制器(FrontController)...
- **依赖**:如果使用Maven或Gradle,则可以在`pom.xml`或`build.gradle`文件中添加依赖。 ##### 1.3 修改web.xml - **配置**:在`web.xml`中配置JFinal的前端过滤器(FrontController)。 - **示例**: ```xml ...
在“Struts2 最新版案例”中,我们关注的是一个基于Struts2.2.3.8版本的项目,这个版本在当时是Struts2的最新更新,它包含了对国际化(i18n)的支持和验证功能。 **1. Struts2框架** Struts2是Apache软件基金会的一...
- **在Spring环境中使用YAML暴露属性**:通过`@ConfigurationProperties`将YAML映射到Java对象。 - **Multi-profile YAML文档**:可以在同一个YAML文件中定义多个profile。 - **YAML缺点**:尽管YAML非常强大,但...
Interceptor 是 AOP 在 JFinal 中的具体实现形式,用于在 Action 执行前后执行特定的操作。 **4.3 Before** Before 注解用于标识一个方法作为前置通知,该方法将在 Action 执行前调用。 **4.4 Clear** Clear ...
在SpringMVC中,注解主要用于声明式的配置,使得开发人员可以在不使用XML配置的情况下实现控制器、请求映射等功能。 ##### 2.4 SpringMVC常用的注解有哪些及作用? - **@Controller**:标记一个类作为SpringMVC的...
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...
它允许开发者在工作流定义中引用数据模型中的属性,执行计算和条件判断。 #### 4.2 EL Implementations Spring Web Flow支持多种EL实现,包括默认的SpEL(Spring Expression Language)以及可选的EL桥接至其他EL...
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...
2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.3.3. 对bean命名pointcut( bean name pointcut element)的支持 2.3.4. 对AspectJ装载...
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...