Configuring where Java HBS looks for partial patterns

In short, Java HBS (jknack.handlebars) looks for my partial templates in very different directories than parent templates. Does anyone know how to configure where jknack.handlebars is looking for partial patterns?

I need to avoid: Error in createLayeredHtml .. com.github.jknack.handlebars.HandlebarsException: / com / XXX / YYY / inline@53ce2ca5.hbs : 598: 8: Could not find partial "/ com / XXX / YYY / temp- templates / CarouselHeader.hbs "

This is the parent template:

  <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}}

UPDATE: I had to say that the default location that HBS is looking for is my (please forgive me if that is not the right term) main directory of my package in java. Its search in / src / main / java / com / company / project. There is no way to point it to something like / src / main / resources?

This is a complete error:

[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)
+4
source share
1 answer

Basically, you need to be sure that your templates are in your classpath and make sure that TemplateLoader knows where your "partial" ones are.

, , , , , , , . , , maven , :

http://maven.apache.org/surefire/maven-surefire-plugin/examples/configuring-classpath.html

, , TemplateLoader , "", setPrefix

https://github.com/jknack/handlebars.java

, , :

TemplateLoader =            ClassPathTemplateLoader ( "/partials/" );

!

0

Source: https://habr.com/ru/post/1608092/


All Articles