我正在尝试用NVelocity做一些关于knockout的教程。一切都很好,但有问题,当它涉及到模板。当我到达本教程的第三步时,它在${meal().mealName}
行给了我一个错误。有人能给我解释一下为什么会这样吗?
下面是堆栈跟踪:
[ParseException: Encountered "().mealName}</td>rn <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>rn <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 'Homeindex.vm': Encountered "().mealName}</td>rn <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
$
是NVelocity和jQuery(默认情况下)的特殊符号,这会导致冲突。然而,这可以通过jQuery. noconflict重新定义。使用这个,你可以将jQuery的$
设置为其他一些符号,虽然我不是100%确定这也适用于jQuery模板(这是什么击倒使用)。
或者,您可能想尝试使用data-bind
而不是${ ... }