实例介绍
【实例简介】NVelocity用法实例
【实例截图】
【实例截图】
【核心代码】
namespace NVelocity.App
{
using System;
using System.IO;
using Commons.Collections;
using Context;
using Exception;
using Runtime;
using Runtime.Log;
/// <summary> <p>
/// This class provides a separate new-able instance of the
/// Velocity template engine. The alternative model for use
/// is using the Velocity class which employs the singleton
/// model.
/// </p>
/// <p>Velocity will call
/// the parameter-less Init() at the first use of this class
/// if the Init() wasn't explicitly called. While this will
/// ensure that Velocity functions, it probably won't
/// function in the way you intend, so it is strongly recommended that
/// you call an Init() method yourself if you use the default constructor.
/// </p>
///
/// </summary>
/// <version> $Id: VelocityEngine.java 687177 2008-08-19 22:00:32Z nbubna $
/// </version>
public class VelocityEngine
{
/// <summary> Set an entire configuration at once. This is
/// useful in cases where the parent application uses
/// the ExtendedProperties class and the velocity configuration
/// is a subset of the parent application's configuration.
///
/// </summary>
/// <param name="configuration">*
/// </param>
public virtual ExtendedProperties ExtendedProperties
{
set
{
ri.Configuration = value;
}
}
/// <summary> Returns a convenient LogMessage instance that wraps the current LogChute.
/// Use this to Log Error messages. It has the usual methods you'd expect.
/// </summary>
/// <returns> A Log object.
/// </returns>
/// <since> 1.5
/// </since>
virtual public Log Log
{
get
{
return ri.Log;
}
}
private RuntimeInstance ri = new RuntimeInstance();
/// <summary> Init-less CTOR</summary>
public VelocityEngine()
{
// do nothing
}
/// <summary> CTOR that invokes an Init(String), initializing
/// the engine using the properties file specified
///
/// </summary>
/// <param name="propsFilename">name of properties file to Init with
/// </param>
/// <throws> Exception </throws>
/// <since> 1.5
/// </since>
public VelocityEngine(string propsFilename)
{
ri.Init(propsFilename);
}
/// <summary> CTOR that invokes an Init(String), initializing
/// the engine using the Properties specified
///
/// </summary>
/// <param name="p">name of properties to Init with
/// </param>
/// <throws> Exception </throws>
/// <since> 1.5
/// </since>
public VelocityEngine(ExtendedProperties p)
{
ri.Init(p);
}
/// <summary> Initialize the Velocity runtime engine, using the default
/// properties of the Velocity distribution
/// </summary>
/// <throws> Exception </throws>
public virtual void Init()
{
ri.Init();
}
/// <summary> Initialize the Velocity runtime engine, using default properties
/// plus the properties in the properties file passed in as the arg
///
/// </summary>
/// <param name="propsFilename">file containing properties to use to Initialize
/// the Velocity runtime
/// </param>
/// <throws> Exception </throws>
public virtual void Init(string propsFilename)
{
ri.Init(propsFilename);
}
/// <summary> Initialize the Velocity runtime engine, using default properties
/// plus the properties in the passed in java.util.Properties object
///
/// </summary>
/// <param name="p"> Proprties object containing initialization properties
/// </param>
/// <throws> Exception </throws>
/// <summary>
/// </summary>
public virtual void Init(ExtendedProperties p)
{
ri.Init(p);
}
/// <summary> Set a Velocity Runtime property.
///
/// </summary>
/// <param name="key">
/// </param>
/// <param name="value">
/// </param>
public virtual void SetProperty(string key, object value)
{
ri.SetProperty(key, value);
}
/// <summary> Add a Velocity Runtime property.
///
/// </summary>
/// <param name="key">
/// </param>
/// <param name="value">
/// </param>
public virtual void AddProperty(string key, object value)
{
ri.AddProperty(key, value);
}
/// <summary> Clear a Velocity Runtime property.
///
/// </summary>
/// <param name="key">of property to clear
/// </param>
public virtual void ClearProperty(string key)
{
ri.ClearProperty(key);
}
/// <summary> Get a Velocity Runtime property.
///
/// </summary>
/// <param name="key">property to retrieve
/// </param>
/// <returns> property value or null if the property
/// not currently set
/// </returns>
public virtual object GetProperty(string key)
{
return ri.GetProperty(key);
}
/// <summary> renders the input string using the context into the output writer.
/// To be used when a template is dynamically constructed, or want to use
/// Velocity as a token replacer.
///
/// </summary>
/// <param name="context">context to use in rendering input string
/// </param>
/// <param name="out"> Writer in which to render the output
/// </param>
/// <param name="logTag"> string to be used as the template name for Log
/// messages in case of Error
/// </param>
/// <param name="instring">input string containing the VTL to be rendered
///
/// </param>
/// <returns> true if successful, false otherwise. If false, see
/// Velocity runtime Log
/// </returns>
/// <throws> ParseErrorException The template could not be parsed. </throws>
/// <throws> MethodInvocationException A method on a context object could not be invoked. </throws>
/// <throws> ResourceNotFoundException A referenced resource could not be loaded. </throws>
/// <throws> IOException While rendering to the writer, an I/O problem occured. </throws>
public virtual bool Evaluate(IContext context, TextWriter writer, string logTag, string instring)
{
return ri.Evaluate(context, writer, logTag, instring);
}
/// <summary> Renders the input reader using the context into the output writer.
/// To be used when a template is dynamically constructed, or want to
/// use Velocity as a token replacer.
///
/// </summary>
/// <param name="context">context to use in rendering input string
/// </param>
/// <param name="writer"> Writer in which to render the output
/// </param>
/// <param name="logTag"> string to be used as the template name for Log messages
/// in case of Error
/// </param>
/// <param name="reader">Reader containing the VTL to be rendered
///
/// </param>
/// <returns> true if successful, false otherwise. If false, see
/// Velocity runtime Log
/// </returns>
/// <throws> ParseErrorException The template could not be parsed. </throws>
/// <throws> MethodInvocationException A method on a context object could not be invoked. </throws>
/// <throws> ResourceNotFoundException A referenced resource could not be loaded. </throws>
/// <throws> IOException While reading from the reader or rendering to the writer, </throws>
/// <summary> an I/O problem occured.
/// </summary>
/// <since> Velocity v1.1
/// </since>
public virtual bool Evaluate(IContext context, TextWriter writer, string logTag, TextReader reader)
{
return ri.Evaluate(context, writer, logTag, reader);
}
/// <summary> Invokes a currently registered Velocimacro with the params provided
/// and places the rendered stream into the writer.
/// <br>
/// Note : currently only accepts args to the VM if they are in the context.
///
/// </summary>
/// <param name="vmName">name of Velocimacro to call
/// </param>
/// <param name="logTag">string to be used for template name in case of Error. if null,
/// the vmName will be used
/// </param>
/// <param name="params">keys for args used to invoke Velocimacro, in java format
/// rather than VTL (eg "foo" or "bar" rather than "$foo" or "$bar")
/// </param>
/// <param name="context">Context object containing data/objects used for rendering.
/// </param>
/// <param name="writer"> Writer for output stream
/// </param>
/// <returns> true if Velocimacro exists and successfully invoked, false otherwise.
/// </returns>
/// <throws> IOException While rendering to the writer, an I/O problem occured. </throws>
public virtual bool InvokeVelocimacro(string vmName, string logTag, string[] parameters, IContext context, TextWriter writer)
{
return ri.InvokeVelocimacro(vmName, logTag, parameters, context, writer);
}
/// <summary> merges a template and puts the rendered stream into the writer
///
/// </summary>
/// <param name="templateName">name of template to be used in merge
/// </param>
/// <param name="encoding">encoding used in template
/// </param>
/// <param name="context"> filled context to be used in merge
/// </param>
/// <param name="writer"> writer to write template into
///
/// </param>
/// <returns> true if successful, false otherwise. Errors
/// logged to velocity Log
/// </returns>
/// <throws> ResourceNotFoundException </throws>
/// <throws> ParseErrorException </throws>
/// <throws> MethodInvocationException </throws>
/// <throws> Exception </throws>
/// <summary>
/// </summary>
/// <since> Velocity v1.1
/// </since>
public virtual bool MergeTemplate(string templateName, string encoding, IContext context, TextWriter writer)
{
Template template = ri.GetTemplate(templateName, encoding);
if (template == null)
{
string msg = "VelocityEngine.mergeTemplate() was unable to load template '" templateName "'";
Log.Error(msg);
throw new ResourceNotFoundException(msg);
}
else
{
template.Merge(context, writer);
return true;
}
}
/// <summary> Returns a <code>Template</code> from the Velocity
/// resource management system.
///
/// </summary>
/// <param name="name">The file name of the desired template.
/// </param>
/// <returns> The template.
/// </returns>
/// <throws> ResourceNotFoundException if template not found </throws>
/// <summary> from any available source.
/// </summary>
/// <throws> ParseErrorException if template cannot be parsed due </throws>
/// <summary> to syntax (or other) Error.
/// </summary>
/// <throws> Exception if an Error occurs in template initialization </throws>
public virtual Template GetTemplate(string name)
{
return ri.GetTemplate(name);
}
/// <summary> Returns a <code>Template</code> from the Velocity
/// resource management system.
///
/// </summary>
/// <param name="name">The file name of the desired template.
/// </param>
/// <param name="encoding">The character encoding to use for the template.
/// </param>
/// <returns> The template.
/// </returns>
/// <throws> ResourceNotFoundException if template not found </throws>
/// <summary> from any available source.
/// </summary>
/// <throws> ParseErrorException if template cannot be parsed due </throws>
/// <summary> to syntax (or other) Error.
/// </summary>
/// <throws> Exception if an Error occurs in template initialization </throws>
/// <summary>
/// </summary>
/// <since> Velocity v1.1
/// </since>
public virtual Template GetTemplate(string name, string encoding)
{
return ri.GetTemplate(name, encoding);
}
/// <summary> Determines if a resource is accessable via the currently
/// configured resource loaders.
/// <br><br>
/// Note that the current implementation will <b>not</b>
/// change the state of the system in any real way - so this
/// cannot be used to pre-load the resource cache, as the
/// previous implementation did as a side-effect.
/// <br><br>
/// The previous implementation exhibited extreme lazyness and
/// sloth, and the author has been flogged.
///
/// </summary>
/// <param name="resourceName"> name of the resource to search for
/// </param>
/// <returns> true if found, false otherwise
/// </returns>
/// <since> 1.5
/// </since>
public virtual bool ResourceExists(string resourceName)
{
return (ri.GetLoaderNameForResource(resourceName) != null);
}
/// <summary> <p>
/// Sets an application attribute (which can be any Object) that will be
/// accessible from any component of the system that gets a
/// RuntimeServices. This allows communication between the application
/// environment and custom pluggable components of the Velocity engine,
/// such as ResourceLoaders and LogChutes.
/// </p>
///
/// <p>
/// Note that there is no enforcement or rules for the key
/// used - it is up to the application developer. However, to
/// help make the intermixing of components possible, using
/// the target Class name (e.g. com.foo.bar ) as the key
/// might help avoid collision.
/// </p>
///
/// </summary>
/// <param name="key">object 'name' under which the object is stored
/// </param>
/// <param name="value">object to store under this key
/// </param>
public virtual void SetApplicationAttribute(object key, object value)
{
ri.SetApplicationAttribute(key, value);
}
/// <summary> <p>
/// Return an application attribute (which can be any Object)
/// that was set by the application in order to be accessible from
/// any component of the system that gets a RuntimeServices.
/// This allows communication between the application
/// environment and custom pluggable components of the
/// Velocity engine, such as ResourceLoaders and LogChutes.
/// </p>
///
/// </summary>
/// <param name="key">object 'name' under which the object is stored
/// </param>
/// <returns> value object to store under this key
/// </returns>
/// <since> 1.5
/// </since>
public virtual object GetApplicationAttribute(object key)
{
return ri.GetApplicationAttribute(key);
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论