[英]Configuring where Java HBS looks for partial templates
簡而言之,Java HBS(jknack.handlebars)正在尋找與父模板完全不同的目錄中的部分模板。 有沒有人知道如何配置jknack.handlebars查找部分模板的位置?
我需要避免: createLayeredHtml中的錯誤.. com.github.jknack.handlebars.HandlebarsException:/com/XXX/YYY/inline@53ce2ca5.hbs:598:8:部分'/ com / XXX / YYY / temp-templates找不到/CarouselHeader.hbs'
這是父模板:
<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}}
更新:我應該說,HBS正在尋找的默認位置是我的(請原諒我,如果這不是正確的術語)我的包在java中的主目錄。 它在/ src / main / java / com / company / project中查找。 有沒有辦法把它指向像/ src / main / resources這樣的東西?
這是完整的錯誤:
[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 = new ClassPathTemplateLoader(“/ partials /”);
非常感謝Roman和Tassos Bassoukos提示!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.