配置Java HBS查找部分模板的位置
简而言之,Java HBS(jknack.handlebars)正在寻找与父模板完全不同的目录中的部分模板.有没有人知道如何配置jknack.handlebars查找部分模板的位置?
我需要避免: 这是父模板: <div data-module="{{type}}" data-module-id="{{module_id}}" class="slick-module athena-item-page-carousel"> {{> temp-templates/CarouselHeader}} <div class="js-carousel-n-up carousel carousel-narrow carousel-banner carousel-n-up-responsive"> {{> temp-templates/CarouselFirstTile}} 更新: 这是完整的错误: [ERROR] 2015-09-18 17:23:34.688 [main] Error in createLayeredHtml.. com.github.jknack.handlebars.HandlebarsException: /com/XXX/YYY/inline@53ce2ca5.hbs:598:8: The partial '/com/XXX/YYY/temp-templates/CarouselHeader.hbs' could not be found at com.github.jknack.handlebars.internal.Partial.merge(Partial.java:142) at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:128) at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:61) at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:128) at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:115) at com.github.jknack.handlebars.Options.apply(Options.java:271) at com.github.jknack.handlebars.Options.fn(Options.java:237) at com.github.jknack.handlebars.Options.fn(Options.java:226) at com.github.jknack.handlebars.helper.IfHelper.apply(IfHelper.java:51) at com.github.jknack.handlebars.internal.Block.merge(Block.java:160) at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:128) at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:61) at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:128) at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:115) at com.github.jknack.handlebars.internal.ForwardingTemplate.apply(ForwardingTemplate.java:82) at com.github.jknack.handlebars.internal.ForwardingTemplate.apply(ForwardingTemplate.java:60) at com.XXX.YYY.utils.HandlebarUtils.render(HandlebarUtils.java:80) at com.XXX.YYY.AthenaLayeredAsset.createLayeredHtml(AthenaLayeredAsset.java:68) at com.XXX.YYY.AthenaSlickCarousel.generateNarrowCarouselHTML(AthenaSlickCarousel.java:27) at com.XXX.YYY.TestAthenaLayeredAsset.testNarrowCarouselSimple(TestAthenaLayeredAsset.java:387) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84) at org.testng.internal.Invoker.invokeMethod(Invoker.java:714) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) at org.testng.TestRunner.privateRun(TestRunner.java:767) at org.testng.TestRunner.run(TestRunner.java:617) at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) at org.testng.SuiteRunner.run(SuiteRunner.java:240) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224) at org.testng.TestNG.runSuitesLocally(TestNG.java:1149) at org.testng.TestNG.run(TestNG.java:1057) at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175) at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:125) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 解决方法
基本上你需要确保你的模板在你的类路径中,并确保TemplateLoader知道你的“部分”在哪里.
在很久以前删除了这个错误后,我终于想出了如何确保包含所有模板的目录包含在类路径中.我相信有不止一种方法可以做到这一点,而且maven专家可能知道更好的方法,但我用过: http://maven.apache.org/surefire/maven-surefire-plugin/examples/configuring-classpath.html 然后,为了确保您的TemplateLoader知道您的“部分”在哪里,您可以使用setPrefix https://github.com/jknack/handlebars.java 或者我们使用的版本在构造函数中有一个选项: protected static final TemplateLoader loader = 非常感谢Roman和Tassos Bassoukos提示! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |