`
yangwn
  • 浏览: 77079 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论
  • icewubin: kimmking 写道icewubin 写道Dollyn 写道 ...
    Java
  • kimmking: icewubin 写道Dollyn 写道我十分怀疑最后一条,很 ...
    Java
  • beneo: 完全忽略了一個好的JVM的優化能力 難道java是C編譯器么 ...
    Java
  • icewubin: Dollyn 写道我十分怀疑最后一条,很多编译器都会自动做类似 ...
    Java
  • Dollyn: 我十分怀疑最后一条,很多编译器都会自动做类似优化吧(不知道JD ...
    Java

实现自定义Velocity Context

阅读更多
Webwork的WebWorkVelocityContext默认提供了 req,res.stack,webwork,action几个内置对象,但不一定能满足我们的需要,往往,我们需要自己定义一些工具类,在velocity页面中调用,比如说,webwork并没有提供一个数据处理的内置对象,Math类使用静态方法,我们不能用简单的直接访问方式访问其中的函数,作为替代方法,我们可以写一个类,创建Math类的包装类,并确保在velocity模板中使用一个变量可以进行数学类方法调用

我们要自己定义一个类,继承VelocityContext,以便让webwork使用我们自定义的VelocityContext

其中定义了数学类Math的包装MathUtil

package ch10;

import org.apache.velocity.VelocityContext;

public class MathVelocityContext extends VelocityContext ...{
  public static final String MATH="math";
  public static final MathUtil O_MATH=new MathUtil();

  public Object internalGet(String arg0) ...{
    if(MATH.equals(arg0))...{
        return O_MATH;
    }else...{
        return super.internalGet(arg0);
    }
   }
  public boolean containsKey(Object key) ...{
         return MATH.equals(key)||super.containsKey(key);
    }
  public static class MathUtil...{
       
      public long round(double a)...{
            return Math.round(a);
        }
        public double ceil(double a)...{
            return Math.ceil(a);
        }
}



}

模板:我们用$math调用包装类MathUtil

<body>
    $math.round(132.1831)
    $math.ceil(132.1831)
</body>

webwork.properties配置

webwork.velocity.contexts=ch10.MathVelocityContext

如果有多个VelocityContext,用“,”隔开



运行结果:

132 133.0


分享到:
评论

相关推荐

    velocity的jar包

    Velocity被设计成一个轻量级的、快速的、非侵入式的模板语言,使得开发者能够将HTML页面的展示逻辑与业务逻辑分离,从而实现MVC(Model-View-Controller)架构。它在Web开发中主要应用于生成动态网页内容,但也可...

    Velocity简单案例

    Velocity是Apache软件基金会下的一个开源项目,它是一个用于Java平台的...在实际应用中,开发者可以根据需求深入学习Velocity的更多高级特性,如条件判断、循环、函数调用、自定义工具类等,以实现更复杂的模板逻辑。

    velocity 配置jar包

    - **自定义指令(Directives)**:你可以通过扩展 Velocity,实现自定义的 VTL 指令,满足特定需求。 - **事件处理器(Event Handlers)**:Velocity 提供了一套事件处理机制,允许你在模板解析和渲染过程中进行...

    velocity 电子书

    - Context是Velocity模板与后端Java代码交互的桥梁,存储了传递给模板的数据。 - 开发者可以将Java对象放入Context,然后在模板中通过VTL变量来访问这些对象。 3. **模板设计原则** - Velocity强调“模板无状态...

    Velocity资料

    资源装载器(Resource Loaders)是Velocity用来加载模板和资源的机制,文档中提到了自定义资源装载器和缓存实现的插入。 15. Velocity字符编码问题: 对于国际化应用,字符编码问题尤为重要,文档中提到了Velocity...

    Velocity 模版

    **Velocity 模板技术详解** Velocity 是一个开源的 Java 模板引擎,它允许开发者将业务逻辑与 HTML、XML 或其他...通过深入学习和实践,开发者可以充分利用 Velocity 实现高效的视图层渲染,提升开发效率和代码质量。

    velocity 入门文档及应用源码,很适合做自动代码生成

    手册中会详细介绍Velocity上下文(Context)、模板(Templates)、模板语言(Template Language)等核心概念,还有Velocity Engine的配置、宏库(Macro Library)的使用,以及与其他Java库如Spring的集成等高级主题。...

    velocity中文文档 教程

    3. **合并上下文和模板**:通过`VelocityTemplate.merge(context, writer)`方法,将上下文中的数据与模板结合,生成最终的输出。 4. **输出结果**:生成的输出可以写入到文件、流或其他输出设备。 **Velocity的优势...

    velocity 简单实例

    4. **自定义指令**:通过实现 `org.apache.velocity.app.VelocimacroFactory` 接口,可以扩展 Velocity 提供自定义的模板指令。 在实际应用中,Velocity 常常与 Spring MVC 或 Struts 等框架结合使用,作为视图层的...

    velocity的学习资料

    - 自定义指令:可以通过扩展Velocity,编写自定义指令以满足特定需求。 7. **最佳实践** - 尽量避免在模板中进行复杂的逻辑处理,保持模板简洁。 - 合理使用`#set`指令,避免全局变量污染。 - 使用`#macro`定义...

    Velocity

    在 Velocity 中,上下文(Context)是连接模板和Java代码的桥梁。开发者可以将Java对象放入上下文中,然后在模板中通过变量名访问这些对象。例如,`$user.name` 在模板中引用的是上下文中名为`user`的对象的`name`属性...

    Velocity 源码例子

    - **自定义指令和工具库**:可以通过实现`MacroLibrary`接口添加自定义宏,或者通过`VelocityEngine.setProperty()`注册自定义工具类。 - **错误处理和调试**:Velocity 提供了丰富的日志和错误处理机制,以及模板...

    velocity入门使用教程

    - **自定义指令(Custom Directives)**:如果内置的指令不能满足需求,你可以创建自定义指令,扩展Velocity的功能。 - **模板的继承与包含(Template Inheritance and Includes)**:通过`#include`和`#macro`指令...

    Struts+Velocity整合示例(含源码)

    Velocity上下文(Context)是连接模板和Java代码的桥梁,后端程序将数据放入Context,然后Velocity会根据Context中的数据渲染模板。 **Struts2与Velocity整合** 整合Struts2和Velocity,主要是让Struts2的Action能够...

    velocity Java开发指南中文版

    - **基本使用模式**: 解释了 Velocity 的核心概念,比如模板、上下文(context)、模型等,并通过示例说明了它们是如何协同工作的。 - **单实例还是多实例(To Singleton Or Not To Singleton)**: 讨论了在不同的应用...

    Velocity--java的模板引擎

    **Velocity——Java的模板引擎** Velocity是Apache软件基金会下的一个开源项目,它是一个基于Java的模板引擎...通过熟练掌握Velocity,开发者可以更好地实现业务逻辑与界面展示的解耦,提高项目的开发效率和可维护性。

    apache velocity介绍及资料

    在使用Velocity时,你需要创建一个Velocity上下文(Context),在这个上下文中添加你想要在模板中访问的对象。然后,通过Velocity模板引擎将这个上下文和模板文件合并,生成最终的输出。Velocity引擎会自动处理对象的...

    Hibernate HQL 结合 velocity

    3. **设置Velocity上下文**:将查询结果和任何其他必要的数据放入Velocity上下文(Context),这是Velocity模板访问数据的地方。 4. **渲染模板**:使用Velocity引擎的`mergeTemplate()`方法,将上下文与模板文件...

    velocity+Java开发指南中文版.zip

    2. **分离关注点**:Velocity有助于实现MVC模式,使开发者能专注于业务逻辑,设计师专注于页面设计。 3. **高性能**:由于Velocity的编译机制,它的性能通常优于其他解释型的模板引擎。 4. **可扩展性**:Velocity...

    Velocity模板使用指南中文版

    ** Velocity 模板使用指南中文版 ** Velocity 是一个基于 Java ...通过阅读这份《Velocity 模板使用指南中文版》,你将能够掌握 Velocity 的基础和进阶知识,从而在实际项目中灵活运用 Velocity 实现高效的模板渲染。

Global site tag (gtag.js) - Google Analytics