JSP/在 Hybris 插件中找不到自定义组件的控制器
JSP / Controller not found for custom component in Hybris addon
我是 运行 Hybris 6.6,正在构建一个新的插件,它基本上是一个控制器和相应的 JSP。然而,在运行时,Hybris 没有找到控制器 bean 并在店面文件夹中搜索 JSP(它不在那里,因为 JSP 在店面插件文件夹中)。
我使用 extgen 创建了插件,然后也使用 ant 将其安装在店面中。
步骤:
- 在 -items.xml 中创建的组件继承自 SimpleCMSComponent
- 已创建继承自 AbstractCMSController 的控制器,
- 已在插件文件夹中创建 JSP,
- 已创建组件并通过 Imped 添加到页面位置,
- @Controller 的名称等于组件 + “Controller”
我调试了代码,当 Hybris 试图通过 getBeanFactory().contains(controller) 查找是否有控制器时,它 returns 错误。如果我查看 bean 工厂 returns 的 bean 列表,控制器的 bean 不存在。
有什么线索吗?我什至尝试在 -web-spring.xml 上显式创建控制器 bean,但没有改变任何东西。
谢谢
确保
- 您的控制器应该扩展
GenericCMSAddOnComponentController
或 AbstractCMSAddOnComponentController
用于插件内的组件。
用
注释控制器
@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" />
只有这个属性,我才加载了控制器。
我是 运行 Hybris 6.6,正在构建一个新的插件,它基本上是一个控制器和相应的 JSP。然而,在运行时,Hybris 没有找到控制器 bean 并在店面文件夹中搜索 JSP(它不在那里,因为 JSP 在店面插件文件夹中)。
我使用 extgen 创建了插件,然后也使用 ant 将其安装在店面中。
步骤:
- 在 -items.xml 中创建的组件继承自 SimpleCMSComponent
- 已创建继承自 AbstractCMSController 的控制器,
- 已在插件文件夹中创建 JSP,
- 已创建组件并通过 Imped 添加到页面位置,
- @Controller 的名称等于组件 + “Controller”
我调试了代码,当 Hybris 试图通过 getBeanFactory().contains(controller) 查找是否有控制器时,它 returns 错误。如果我查看 bean 工厂 returns 的 bean 列表,控制器的 bean 不存在。
有什么线索吗?我什至尝试在 -web-spring.xml 上显式创建控制器 bean,但没有改变任何东西。
谢谢
确保
- 您的控制器应该扩展
GenericCMSAddOnComponentController
或AbstractCMSAddOnComponentController
用于插件内的组件。 用
注释控制器@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" />
只有这个属性,我才加载了控制器。