在模板渲染的过程中,为了支持用户监听其中的事件并且做出相应的处理,Velocity提供了事件模型。Velocity一共提供了三种事件模型:NullSetEventHandler、MethodExceptionEventHandler、ReferenceInsertionEventHandle
1. NullSetEventHandler
接口路径:org.apache.velocity.app.event.NullSetEventHandler
#set指令执行的时候,rhs为空的时候,可以定义set之前会执行的队列。当队列中,其中一个方法返回false时,会退出队列,不执行下去。如果没有这个handler,则会打印日志。
2. MethodExceptionEventHandler
接口路径:org.apache.velocity.app
.event.MethodExceptionEventHandler
当一个方法执行抛出异常前,会执行的对象,只有第一个注册的才会被执行。如果没有这个handler,则会抛出异常。
3. ReferenceInsertionEventHandler
接口路径:
org.apache.velocity.app.event.ReferenceInsertionEventHandler
当一个引用值被插入到output stream,velocity merge之前,会执行的队列。如果没有这个handler,则这个引用值直接输出到output stream中。
通常web应用会在第三个几口中下功夫,对于最终输出的内容,会进行转码,加密等操作,例如 <html> 最后会转码成 <html>。