繁体   English   中英

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

[英]JSP / Controller not found for custom component in Hybris addon

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

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

脚步:

  • 在从 SimpleCMSComponent 继承的 -items.xml 中创建组件
  • 创建继承自 AbstractCMSController 的控制器,
  • 在插件文件夹中创建 JSP,
  • 创建组件并通过 Imped 添加到页面槽中,
  • @Controller 的名称等于组件 + “Controller”

我已经调试了代码,当 Hybris 尝试通过 getBeanFactory().contains(controller) 查找是否有控制器时,它返回 false。 如果我查看 bean 工厂返回的 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应该在资源文件夹/路径中

  • 应该在*-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" />

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM