查看文章
 
解决NVelocity加载模板时出现Unable to find resource"xxx"错误
2009-03-19 上午 9:27

NVelocity现在属于Castle项目,相关介绍:http://www.castleproject.org/others/nvelocity/index.html

使用方法:http://www.castleproject.org/others/nvelocity/usingit.html

发现很多人在按上面的方法使用时会出现Unable to find resource"xxx"错误

解决办法:

在engine.Init(props);之前使用

props.AddProperty("file.resource.loader.path", Server.MapPath("."));

第2个参数Server.MapPath(".")指当前模板文件所在的目录,如果你的模板文件完整路径是:c:\xx\xx.vm

则应该把Server.MapPath(".")替换成c:\xx

例子代码:

myfirsttemplate.vm和NVelocityDemo.aspx在同一个目录下

1.myfirsttemplate.vm文件:

From: $from
To: $to
Subject: $subject

Hello, $customer

2.NVelocityDemo.aspx.cs代码:

using Commons.Collections;
using NVelocity;
using NVelocity.App;
using NVelocity.Context;
using System.IO;
using System.Text;
namespace webTest
{
    public partial class NVelocityDemo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            VelocityEngine engine = new VelocityEngine();
            ExtendedProperties props = new ExtendedProperties();
            //Server.MapPath(".")
            props.AddProperty("file.resource.loader.path", Server.MapPath("."));

            engine.Init(props);

            Template template = engine.GetTemplate("myfirsttemplate.vm");

            VelocityContext context = new VelocityContext();
            context.Put("from", "somewhere");
            context.Put("to", "someone");
            context.Put("subject", "Welcome to NVelocity");
            context.Put("customer", "jon zhao");

            StringWriter writer = new StringWriter();
            template.Merge(context, writer);
            Response.Write(writer.GetStringBuilder().ToString());

}

}

}

           


类别:默认分类| |分享到i贴吧|浏览(1296)|评论 (0)
 
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu