点击此处---> 群内免费提供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 em>
8)然后,我全部清理
9)我运行 hybrisserver.bat 并等待 <罢工> 时间过长 用于服务器启动。
10)我将组件添加到了CMSCockpit中,并将所有其他步骤添加到了主页中。
现在这里发生两个问题:
-
访问主页时,收到以下错误:处理组件标签时出错。 currentComponent [CMSVideoComponentModel(8796191360060 @ 3)]例外:未找到文件"/WEB-INF/views/response/cms/cmsvideocomponent.jsp" ,我意识到该文件已在店面中的以下位置复制:< strong>/WEB-INF/views/addons/mediaaddon/cms/cmsvideocomponent.jsp
-
我的控制器已复制到 web/addonsrc/mediaaddon/br/com/targetit/controllers/cms/CMSVideoComponentController.java
的店面中
我几天试图使我的控制器正常工作(因为未在控制台中写入控制器的日志)并将我的jsp文件复制到正确的路径。 我试图将值从控制器传递到jsp,但它不起作用。
任何人都可以帮助您了解实际情况吗?
嗨! 缺少这项工作:在project.properties中添加此行。
" yb2bacceleratorstorestore.additionalWebSpringConfigs.mediaaddon = classpath \:/mediaaddon/web/spring/mediaaddon-web-spring.xml"
当我在project.properties中添加此行时,读取了我的组件并且处理了我的控制器。
将第6点更改为
公共接口操作{接口Cms//NOSONAR {字符串CMSVideoComponent = _Prefix + CMSVideoComponentModel._TYPECODE + _Suffix; }//隐藏代码}
嗨,
我遇到了同样的问题,原因是我们的控制器类没有在spring之前加载。 在mediaaddon-web-spring.xml中使用以下行来解决此问题。
在第6点第5行,您的插件名称应为
addon:/mediaaddon/cms/
,而不是addon:/Mediaaddon/cms/
。使用Hybris提供的
AbstractCMSAddOnComponentController
而不是AbstractCMSComponentController
,这样您就不必担心getView()
的实现了。AbstractCMSAddOnComponentController getView()
将在componentModel的帮助下使用扩展名扩展呈现jsp页面路径。我认为不是yb2bacceleratorstorefront。 它应该是自定义店面名称。 Exp- Mystorefront
嗨
如何扩展现有的ComponentController? 我收到一个错误消息,因为控制器的注释已经存在。
谢谢
一周热门 更多>