首页 新闻 赞助 找找看

NVelocity 更换模板路径 不管用的问题

0
悬赏园豆:10 [已关闭问题] 关闭于 2013-04-15 11:44

代码如下:

View Code
 protected static   VelocityEngine vltEngine = null;
        private static object objLock = new object();
        private IContext context = new VelocityContext();
        public bool IsFile = true;
        /// <summary>
        /// 是否重模板中生成
        /// </summary>
        /// <param name="isFile"></param>
        public void Init(string loadPath, bool isFile)
        {
            lock (objLock)
            {
                if (vltEngine == null)
                {
                    vltEngine = new VelocityEngine();
                    vltEngine.SetProperty(RuntimeConstants.INPUT_ENCODING, "gb2312");
                    vltEngine.SetProperty(RuntimeConstants.OUTPUT_ENCODING, "utf-8");
                    vltEngine.SetProperty("directive.set.null.allowed", true);   //可以为空

                    vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_CACHE, true);  //开启缓存
                    vltEngine.SetProperty("file.resource.loader.modificationCheckInterval", (Int64)600);
                    vltEngine.SetProperty("resource.manager.class", "NVelocity.Runtime.Resource.ResourceManagerImpl");
                    vltEngine.SetProperty("resource.manager.cache.class", "NVelocity.Runtime.Resource.ResourceCacheImpl");
                    IsFile = isFile;
                    if (IsFile)
                    {
                        //初始化该实例对象
                        vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file"); //加载类型
                        if (!string.IsNullOrEmpty(loadPath))
                            vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, loadPath);//设置路径
                    }
                    vltEngine.Init();
                }
                else
                {

                    IsFile = isFile;
                    if (IsFile)
                    {
                        //初始化该实例对象

                        //也可以在这里指定绝对路径。当指定相对路径时, 在不同的环境下是有区别的。
                        if (vltEngine.GetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH).ToString() != loadPath)
                        {
                            vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file"); //加载类型
                            if (!string.IsNullOrEmpty(loadPath))
                                vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, loadPath);//设置路径
                            vltEngine.Init();
                        }
                    }

                }

            }

        }

是静态VelocityEngine  调用时根据栏目设置模板路径跟换模板。

发现重新设置路径,并重新初始化后不管用。我用的dll NVelocity.dll 版本 1.1.1.60

vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, loadPath);//设置路径

vltEngine.Init();

请各问大侠告诉在下怎样动态更换路径呢,除了每次都初始化这个方法。

问题很严重,加班吧。的主页 问题很严重,加班吧。 | 初学一级 | 园豆:18
提问于:2013-03-10 21:40
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册