JSP / Контроллер не найден для пользовательского компонента в аддоне Hybris

Я запускаю Hybris 6.6 и создаю новый аддон, который по сути представляет собой контроллер и соответствующий JSP. Однако во время выполнения Hybris не находит компонент-контроллер и ищет JSP в папке витрины магазина (его там нет, поскольку JSP находится в папке надстройки витрины).

Я создал аддон с помощью extgen, а затем установил его в магазине с помощью также ant.

Шаги:

  • Создан компонент в -items.xml, унаследованный от SimpleCMSComponent
  • Создан контроллер, унаследованный от AbstractCMSController,
  • Создал JSP в папке аддона,
  • Создан компонент и добавлен в слот страницы через Imped,
  • @Controller имеет имя, равное компоненту + «Контроллер».

Я отладил код, и когда Hybris пытается определить наличие контроллера через getBeanFactory (). Contains (controller), он возвращает false. Если я посмотрю на список bean-компонентов, возвращаемый фабрикой bean-компонентов, там нет bean-компонента для контроллера.

Есть какие-нибудь подсказки о том, что происходит? Я даже пытался явно создать бин контроллера в -web-spring.xml, но ничего не менял.

Спасибо


person Joao Sousa    schedule 27.08.2018    source источник


Ответы (2)


Убедись

  • Ваш контроллер должен расширять GenericCMSAddOnComponentController или AbstractCMSAddOnComponentController для компонента внутри аддона.
  • Добавьте аннотацию к контроллеру с помощью

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

  • Добавьте свой jsp в *addon/web/webroot/*/view/*/cms/yourcomponentname.jsp. Обратитесь к методу getView для AbstractCMSAddOnComponentController, чтобы узнать путь

  • *-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

person HybrisHelp    schedule 27.08.2018
comment
Большое спасибо! Это был либо AbstractCMSAddOnController (я использовал обычный), либо сканирование компонентов. - person Joao Sousa; 27.08.2018
comment
Я рада, что это тебе помогло !! - person HybrisHelp; 27.08.2018
comment
Оба были причиной вашей проблемы. - person HybrisHelp; 27.08.2018
comment
Я знаю :) Я имел в виду, был ли один из них, который решил проблему getBeanFactory, прежде чем я столкнулся с другим :) - person Joao Sousa; 27.08.2018

В дополнение к отличным инструкциям 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" />

Только с этим атрибутом у меня загрузился контроллер.

person Martin Horvath    schedule 13.12.2019