0

我正在尝试使用 NVelocity 做一些关于淘汰赛的教程。一切都很好,但是在模板方面存在问题。当我到达本教程的第三步时,它给了我一个错误${meal().mealName}。谁能向我解释为什么会这样?

这是堆栈跟踪:

[ParseException: Encountered "().mealName}</td>\r\n            <td>" at line 50, column 23.
Was expecting one of:
    "}" ...
    <DOT> ...
    ]
   NVelocity.Runtime.Parser.Parser.Parse(TextReader reader, String templateName) +257
   NVelocity.Runtime.RuntimeInstance.Parse(TextReader reader, String templateName, Boolean dumpNamespace) +327
   NVelocity.Runtime.RuntimeInstance.Parse(TextReader reader, String templateName) +71
   NVelocity.Template.Process() +252

[ParseErrorException: Encountered "().mealName}</td>\r\n            <td>" at line 50, column 23.
Was expecting one of:
    "}" ...
    <DOT> ...
    ]
   NVelocity.Template.Process() +585
   Castle.MonoRail.Framework.Views.NVelocity.CustomTemplate.Process() +266
   Castle.MonoRail.Framework.Views.NVelocity.CustomResourceManager.ProcessResourceWithSensibleExceptionWrapping(String resourceName, Resource resource) +67

[ResourceProcessingException: Unable to process resource 'Home\index.vm': Encountered "().mealName}</td>\r\n            <td>" at line 50, column 23.
Was expecting one of:
    "}" ...
    <DOT> ...
    ]
   Castle.MonoRail.Framework.Views.NVelocity.CustomResourceManager.ProcessResourceWithSensibleExceptionWrapping(String resourceName, Resource resource) +117
   Castle.MonoRail.Framework.Views.NVelocity.CustomResourceManager.GetResource(String resourceName, ResourceType resourceType, String encoding) +663
   NVelocity.Runtime.RuntimeInstance.GetTemplate(String name, String encoding) +81
   NVelocity.Runtime.RuntimeInstance.GetTemplate(String name) +104
   NVelocity.App.VelocityEngine.GetTemplate(String name) +71
   Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine.Process(String viewName, TextWriter output, IEngineContext context, IController controller, IControllerContext controllerContext) +593
   Castle.MonoRail.Framework.Services.DefaultViewEngineManager.Process(String templateName, TextWriter output, IEngineContext context, IController controller, IControllerContext controllerContext) +262
   Castle.MonoRail.Framework.Controller.ProcessView() +170
   Castle.MonoRail.Framework.Controller.RunActionAndRenderView() +2529
   Castle.MonoRail.Framework.Controller.Process(IEngineContext engineContext, IControllerContext context) +74
   Castle.MonoRail.Framework.BaseHttpHandler.Process(HttpContext context) +175

[MonoRailException: Error processing MonoRail request. Action index on controller Home]
   Castle.MonoRail.Framework.BaseHttpHandler.Process(HttpContext context) +505
   Castle.MonoRail.Framework.BaseHttpHandler.ProcessRequest(HttpContext context) +53
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
4

1 回答 1

1

$是 NVelocity 和 jQuery(默认情况下)的特殊符号,它会导致冲突。然而,这可以通过使用jQuery.noConflict为 jQuery 重新定义。使用它,您可以将 jQuery 设置$为其他符号,尽管我不是 100% 确定这也适用于 jQuery 模板(这是淘汰赛使用的)。

或者,您可能想尝试使用data-bind而不是${ ... }

于 2011-08-29T02:50:52.403 回答