解决NVelocity加载模板时出现Unable to find resource"xxx"错误

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());

}

}

}

           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值