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

时间:2018-08-27 08:29:10

标签: components hybris add-on

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

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

步骤:

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

我已经调试了代码,当Hybris尝试通过getBeanFactory()。contains(controller)查找是否存在控制器时,它返回false。如果我查看bean工厂返回的bean列表,则控制器的bean不存在。

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

谢谢

2 个答案:

答案 0 :(得分:4)

确定

  • 您的控制器应该扩展插件内部组件的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在其他WebSpringConfigs属性中。请参阅您的插件project.properties

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

答案 1 :(得分:0)

除了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" />

只有具有此属性,控制器才为我加载。