我有2个项目。项目A是一个Spring Boot应用程序,主要专注于编辑和更新信息。项目B具有查看信息的方法,我正试图将其用作(A)的依赖项,以最大限度地提高代码重用并最大限度地减少修复任何错误/多次进行任何改进的努力。
我希望能够让我的控制器和模板正确地动态找到正确的模板。
项目A正确地利用了项目B依赖项中包含的任何服务/DAO等,但我在前端处理方面遇到了问题。在过去,我有一个没有前端的项目使用第二个项目中定义的模板。这很简单,只需在我的配置中的Freemarker Bean上设置正确的TemplateLoaderPath即可。这一次,我怀疑,一旦我调用了项目a的本地模板,就会假定在该上下文路径上也会找到任何子数量模板,而不是在项目B中查找
我可能更容易显示项目的结构:
src/main/resources/templates/feature1/f1页。ftl功能2/2页。ftl Maven Dependencies项目B。jar模板/功能3/F3页。ftl功能4/F4第页。ftl
我希望当我为我的控制器返回新的ModelAndView对象时
返回新的ModelAndView(“feature3/f3page.ftl”)
和
返回新的ModelAndView(“feature1/f1page.ftl”)
它可以工作,因为两个功能文件夹都位于不同的位置。
值得一提的是,有很多模板导入正在进行,因此在这里也需要找到正确的模板。因此,如果
f1page.ftl
(在src/main/Resources中)有以下行:
<代码>
下面是此示例中当前freemarker堆栈跟踪的示例。似乎找到了F1页。ftl返回时:
新模型和视图(“feature1/f1page.ftl”)
但找不到功能3/F3页。ftl是第2行的导入。
<代码>模板导入失败(对于参数值“/feature3/f3page.ftl”):找不到名称“/feature3/f3page.ftl”的模板。此模板加载程序解释了该名称:MultiTemplateLoader(加载程序1=FileTemplateLoader(baseDir=“C:\Users\Becxxxa\Projects\ProjectA\target\classes\templates”,canonicalBasePath=“C:\Users\Becxxxa\Projects\ProjectA\target\classes\templates”),loader2=ClassTemplateLoader(resourceLoaderClass=org.springframework.web.servlet.view.freemarker.freemarkerconfiguer,basePackagePath=“”/*相对于resourceLoaderClass pkg*/)。---FTL堆栈跟踪(“~”表示嵌套相关):-在以下位置失败:#导入“/feature3/f3page.FTL”作为f3[在模板“feature1/f1page.FTL”的第2行第1列]
这是我的
@Bean
,您可以看到我已经将设置首选文件系统访问(setPreferFileSystemAccess)应用于
错误(正如这里所建议的那样),但没有任何效果。
<代码>@Bean public FreeMarkerConfigurationFactoryBean getFreeMarkerConfiguration(){FreeMarkerConfigurationFactoryBean=new FreeMarkerConfigurationFactoryBean();Bean.setTemplateLoaderPath(“classpath:/templates/”);Bean.setPreferFileSystemAccess(false);return Bean;}
有可能我对Freemarker要求太多,而这实际上是不可能的。但如果不是,我需要帮助来正确配置我的项目/freemarker,以便动态地使用这两个模板源。我觉得我可能在模板加载方面遗漏了一些明显的东西。
感谢@Taylor O'Connor,尽管这不是我认为我在寻找的解决方案,但它是一个简单的解决方案,可以解决看似复杂的问题。
最后,我使用maven依赖插件将所需的模板从依赖项解包到父项目的“src/main/resources/templates”文件夹中。这满足了我不必维护同一代码的多个源的要求。
这是我添加到pom的插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>uk.co.company</groupId>
<artifactId>projectA</artifactId>
<outputDirectory>src/main/resources/</outputDirectory>
<includes>templates/feature3/**</includes>
<excludes>*/feature4/*</excludes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
这会将功能3的文件夹放入我的模板文件夹中。我不得不排除feature4,因为它与我的templates文件夹中已有的文件夹名称相匹配,对我来说,这是最好的,因为模板必须略有不同,因为它包含我的“布局”。ftl’这在不同的应用中略有不同。
问题内容: 我正在尝试设置一些环境变量(用于对dev / prod端点进行API调用,取决于dev / prod等的键等),我想知道使用dotenv是否行得通。 我已经安装了dotenv,并且正在使用webpack。 我的webpack条目是,因此在该文件中 然后,在我的webpack配置中,输入以下内容: 但是,它仍未定义。如何正确执行此操作? 问题答案: 最简洁的答案是不。浏览器无法访问本地或
我在导航图中实现了一个嵌套图,它有两个图。在第一个图中,有3个片段,在第二个图中,有2个片段。图2包含在图1中。我想导航到(图1步骤1)到(图2步骤2)。我们不能定义两个嵌套片段之间的动作。那么,有什么方法可以将动态目的地分配给导航? 图1 图2 我已经检查了这个解决方案,但它不适用于嵌套图!
https://www.jooq.org/doc/3.14/manual/sql-building/table-expressions/values/
我有一个简单的Maven项目,看起来像这个项目视图 有一个主要的pom。xml如下所示: 有两个模块-核心和测试。核心模块pom.xml: 测试模块pom。xml 我想使用核心内部测试的代码。这种依赖性看起来是正确的。该项目已生成,没有错误: 但是,当我在测试中尝试从core导入一个类时,找不到该类。
我正面临着一个问题,也需要同样的帮助。它与GCP数据流(Apache Beam)有关。 我正在寻找使用项目a中定义的服务帐户()从其他项目a运行项目B的Dataflow模板的解决方案。已在项目B中具有必要的权限。 我已经尝试使用下面的命令 其中使用的是项目B中存在的模板的位置。 当我使用project A的服务帐户时,它会在project A中触发作业,但不会在project B中触发作业。当我使
当我使用jersey开发一个rest api应用程序时,我遇到了一个问题,我需要为特定的业务逻辑部分实现一个websocketendpoint。 我提出这个问题是因为我认为jersey与javaee-api工件之间存在一些依赖关系冲突。