[已解决] Hybris 6.3中的CMS组件控制器无法正常工作

2020-09-22 20:20发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我在Hybris中创建CMS组件,尝试使用控制器时遇到问题。 我创建了一个运行以下命令的新插件:

 蚂蚁extgen -Dinput.template = yaddon -Dinput.name = mediaaddon -Dinput.package = com.myapp.mediaaddon
  

1)我使用

在我的店面中安装了插件
  ant addoninstall -Daddonnames =" mediaaddon" -DaddonStorefront.yb2bacceleratorstorestore =" MyB2BStorefront"
  

2)我在XML文件 mediaaddon-items.xml

中创建了模型

3)我确实做了 antant

4)然后,我在 mediaaddon/acceleratoraddon/web/src/com/myapp/controllers/cms/CMSVideoComponentController.java ,并显示以下代码:

 /**
   *
   */
  包com.myapp.controllers.cms;
 
  导入javax.servlet.http.HttpServletRequest;
 
  导入de.hybris.platform.acceleratorstorefrontcommons.controllers.cms.AbstractCMSComponentController;
 
  导入org.apache.commons.lang.StringUtils;
  导入org.apache.log4j.Logger;
  导入org.springframework.stereotype.Controller;
  导入org.springframework.ui.Model;
  导入org.springframework.web.bind.annotation.RequestMapping;
  导入org.springframework.web.bind.annotation.RequestMethod;
 
  导入com.mycompany.model.CMSVideoComponentModel;
  导入com.mycompany.constants.MediaaddonConstants;
 
 
  @Controller(" CMSVideoComponentController")
  @RequestMapping(值= MediaaddonConstants.Actions.Cms.CMSVideoComponent)
  公共类CMSVideoComponentController扩展了AbstractCMSComponentController 
  {
 
      私有静态最终Logger LOG = Logger.getLogger(CMSVideoComponentController.class);
 
     //@Resource(name =" modelService")
     //私人ModelService modelService;
 
      @Override
      受保护的void fillModel(最终HttpServletRequest请求,最终模型模型,最终CMSVideoComponentModel组件)
      {
          LOG.info("我传入CMSVideoComponentController fillmodel方法");
      }
 
      @RequestMapping(值="/img/testController",方法= RequestMethod.GET)
      公共无效的testController()
      {
      }
 
      @Override
      受保护的String getView(最终CMSVideoComponentModel组件)
      {
         //记录少量信息以进行调试
          LOG.info(" >>>>> CMSVideoComponentController.getView(最终T组件)");
          LOG.info(" getTypeCode(component):" + getTypeCode(component));
          LOG.info(" StringUtils.lowerCase(getTypeCode(component)):" + StringUtils.lowerCase(getTypeCode(component)));
          LOG.info(" MediaaddonConstants.Views.Cms.ComponentPrefix:" + MediaaddonConstants.Views.Cms.ComponentPrefix);
          LOG.info(" return:" + MediaaddonConstants.Views.Cms.ComponentPrefix + StringUtils.lowerCase(getTypeCode(component)));
          LOG.info(" <--------------------------------------------  ----------->");
 
         //根据组件类型构建一个jsp响应
          返回MediaaddonConstants.Views.Cms.ComponentPrefix + StringUtils.lowerCase(getTypeCode(component));
      }
 
    /**
       * @参数模型服务
       *要设置的modelService
       */
     //public void setModelService(final ModelService modelService)
     //{
     //this.modelService = modelService;
     //}
  }
  

6)而我的常数就像

 公共界面视图
      {
          接口Cms//NOSONAR
          {
              字符串ComponentPrefix =" addon:/Mediaaddon/cms/"; //NOSONAR
          }
          //隐藏的代码
           }
  

7),而我的JSP位于 mediaaddon/acceleratoraddon/web/webroot/WEB-INF/views/sensitive/cms/cmsvideocomponent.jsp

8)然后,我全部清理

9)我运行 hybrisserver.bat 并等待 <罢工> 时间过长 用于服务器启动。

10)我将组件添加到了CMSCockpit中,并将所有其他步骤添加到了主页中。

现在这里发生两个问题:

  1. 访问主页时,收到以下错误:处理组件标签时出错。 currentComponent [CMSVideoComponentModel(8796191360060 @ 3)]例外:未找到文件"/WEB-INF/views/response/cms/cmsvideocomponent.jsp" ,我意识到该文件已在店面中的以下位置复制:< strong>/WEB-INF/views/addons/mediaaddon/cms/cmsvideocomponent.jsp

  2. 我的控制器已复制到 web/addonsrc/mediaaddon/br/com/targetit/controllers/cms/CMSVideoComponentController.java

  3. 的店面中

我几天试图使我的控制器正常工作(因为未在控制台中写入控制器的日志)并将我的jsp文件复制到正确的路径。 我试图将值从控制器传递到jsp,但它不起作用。

任何人都可以帮助您了解实际情况吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我在Hybris中创建CMS组件,尝试使用控制器时遇到问题。 我创建了一个运行以下命令的新插件:

 蚂蚁extgen -Dinput.template = yaddon -Dinput.name = mediaaddon -Dinput.package = com.myapp.mediaaddon
  

1)我使用

在我的店面中安装了插件
  ant addoninstall -Daddonnames =" mediaaddon" -DaddonStorefront.yb2bacceleratorstorestore =" MyB2BStorefront"
  

2)我在XML文件 mediaaddon-items.xml

中创建了模型

3)我确实做了 antant

4)然后,我在 mediaaddon/acceleratoraddon/web/src/com/myapp/controllers/cms/CMSVideoComponentController.java ,并显示以下代码:

 /**
   *
   */
  包com.myapp.controllers.cms;
 
  导入javax.servlet.http.HttpServletRequest;
 
  导入de.hybris.platform.acceleratorstorefrontcommons.controllers.cms.AbstractCMSComponentController;
 
  导入org.apache.commons.lang.StringUtils;
  导入org.apache.log4j.Logger;
  导入org.springframework.stereotype.Controller;
  导入org.springframework.ui.Model;
  导入org.springframework.web.bind.annotation.RequestMapping;
  导入org.springframework.web.bind.annotation.RequestMethod;
 
  导入com.mycompany.model.CMSVideoComponentModel;
  导入com.mycompany.constants.MediaaddonConstants;
 
 
  @Controller(" CMSVideoComponentController")
  @RequestMapping(值= MediaaddonConstants.Actions.Cms.CMSVideoComponent)
  公共类CMSVideoComponentController扩展了AbstractCMSComponentController 
  {
 
      私有静态最终Logger LOG = Logger.getLogger(CMSVideoComponentController.class);
 
     //@Resource(name =" modelService")
     //私人ModelService modelService;
 
      @Override
      受保护的void fillModel(最终HttpServletRequest请求,最终模型模型,最终CMSVideoComponentModel组件)
      {
          LOG.info("我传入CMSVideoComponentController fillmodel方法");
      }
 
      @RequestMapping(值="/img/testController",方法= RequestMethod.GET)
      公共无效的testController()
      {
      }
 
      @Override
      受保护的String getView(最终CMSVideoComponentModel组件)
      {
         //记录少量信息以进行调试
          LOG.info(" >>>>> CMSVideoComponentController.getView(最终T组件)");
          LOG.info(" getTypeCode(component):" + getTypeCode(component));
          LOG.info(" StringUtils.lowerCase(getTypeCode(component)):" + StringUtils.lowerCase(getTypeCode(component)));
          LOG.info(" MediaaddonConstants.Views.Cms.ComponentPrefix:" + MediaaddonConstants.Views.Cms.ComponentPrefix);
          LOG.info(" return:" + MediaaddonConstants.Views.Cms.ComponentPrefix + StringUtils.lowerCase(getTypeCode(component)));
          LOG.info(" <--------------------------------------------  ----------->");
 
         //根据组件类型构建一个jsp响应
          返回MediaaddonConstants.Views.Cms.ComponentPrefix + StringUtils.lowerCase(getTypeCode(component));
      }
 
    /**
       * @参数模型服务
       *要设置的modelService
       */
     //public void setModelService(final ModelService modelService)
     //{
     //this.modelService = modelService;
     //}
  }
  

6)而我的常数就像

 公共界面视图
      {
          接口Cms//NOSONAR
          {
              字符串ComponentPrefix =" addon:/Mediaaddon/cms/"; //NOSONAR
          }
          //隐藏的代码
           }
  

7),而我的JSP位于 mediaaddon/acceleratoraddon/web/webroot/WEB-INF/views/sensitive/cms/cmsvideocomponent.jsp

8)然后,我全部清理

9)我运行 hybrisserver.bat 并等待 <罢工> 时间过长 用于服务器启动。

10)我将组件添加到了CMSCockpit中,并将所有其他步骤添加到了主页中。

现在这里发生两个问题:

  1. 访问主页时,收到以下错误:处理组件标签时出错。 currentComponent [CMSVideoComponentModel(8796191360060 @ 3)]例外:未找到文件"/WEB-INF/views/response/cms/cmsvideocomponent.jsp" ,我意识到该文件已在店面中的以下位置复制:< strong>/WEB-INF/views/addons/mediaaddon/cms/cmsvideocomponent.jsp

  2. 我的控制器已复制到 web/addonsrc/mediaaddon/br/com/targetit/controllers/cms/CMSVideoComponentController.java

  3. 的店面中

我几天试图使我的控制器正常工作(因为未在控制台中写入控制器的日志)并将我的jsp文件复制到正确的路径。 我试图将值从控制器传递到jsp,但它不起作用。

任何人都可以帮助您了解实际情况吗?

付费偷看设置
发送
5条回答
蓋茨
1楼 · 2020-09-22 21:13.采纳回答

嗨! 缺少这项工作:在project.properties中添加此行。

" yb2bacceleratorstorestore.additionalWebSpringConfigs.mediaaddon = classpath \:/mediaaddon/web/spring/mediaaddon-web-spring.xml"

当我在project.properties中添加此行时,读取了我的组件并且处理了我的控制器。

南山jay
2楼-- · 2020-09-22 21:03

将第6点更改为

公共接口操作{接口Cms//NOSONAR {字符串CMSVideoComponent = _Prefix + CMSVideoComponentModel._TYPECODE + _Suffix; }//隐藏代码}

Haoba3210
3楼-- · 2020-09-22 21:07

嗨,

我遇到了同样的问题,原因是我们的控制器类没有在spring之前加载。 在mediaaddon-web-spring.xml中使用以下行来解决此问题。

  
  

在第6点第5行,您的插件名称应为 addon:/mediaaddon/cms/,而不是 addon:/Mediaaddon/cms/

使用Hybris提供的 AbstractCMSAddOnComponentController 而不是 AbstractCMSComponentController ,这样您就不必担心 getView()的实现了。 AbstractCMSAddOnComponentController getView()将在componentModel的帮助下使用扩展名扩展呈现jsp页面路径。

me_for_i
4楼-- · 2020-09-22 20:56

我认为不是yb2bacceleratorstorefront。 它应该是自定义店面名称。 Exp- Mystorefront

代楠1984
5楼-- · 2020-09-22 20:57

如何扩展现有的ComponentController? 我收到一个错误消息,因为控制器的注释已经存在。

谢谢

一周热门 更多>