JSP/在 Hybris 插件中找不到自定义组件的控制器

JSP / Controller not found for custom component in Hybris addon

我是 运行 Hybris 6.6,正在构建一个新的插件,它基本上是一个控制器和相应的 JSP。然而,在运行时,Hybris 没有找到控制器 bean 并在店面文件夹中搜索 JSP(它不在那里,因为 JSP 在店面插件文件夹中)。

我使用 extgen 创建了插件,然后也使用 ant 将其安装在店面中。

步骤:

我调试了代码,当 Hybris 试图通过 getBeanFactory().contains(controller) 查找是否有控制器时,它 returns 错误。如果我查看 bean 工厂 returns 的 bean 列表,控制器的 bean 不存在。

有什么线索吗?我什至尝试在 -web-spring.xml 上显式创建控制器 bean,但没有改变任何东西。

谢谢

确保

  • 您的控制器应该扩展 GenericCMSAddOnComponentControllerAbstractCMSAddOnComponentController 用于插件内的组件。
  • 注释控制器

    @Controller(YourComponentController) @RequestMapping(value="/view/YourComponentController")

  • 将您的 jsp 添加到 *addon/web/webroot/*/view/*/cms/yourcomponentname.jsp。 路径参考AbstractCMSAddOnComponentController的getView方法

  • *-web-spring.xml 应该在资源 folder/path

  • 应该在 *-web-spring.xml

    中为您的控制器添加组件扫描

    <context:component-scan base-package="my.path.controllers"/>

  • *-web-spring.xml 应该在 additionalWebSpringConfigs 属性中配置。请参考您的插件 project.properties

    喜欢 myCustomstorefront.additionalWebSpringConfigs.MyAddonName=classpath:/XXX/web/spring/*-web-spring.xml

除了 HybrisHelp 的出色说明外,其他遇到此问题的人可能需要将其添加到 *-web-spring.xml

scope-resolver="de.hybris.platform.spring.IgnoreTenantScopeMetadataResolver"

看起来像

<context:component-scan base-package="my.path.controllers" scope-resolver="de.hybris.platform.spring.IgnoreTenantScopeMetadataResolver" />

只有这个属性,我才加载了控制器。