Hybris Storefront 里搜索显示结果的实现原理

举报
汪子熙 发表于 2022/02/17 21:58:58 2022/02/17
【摘要】 CRMCRM 基于 WebClient UI 技术的搜索界面如下图所示: HybrisHybris是怎么实现的?我问过Hybris成都同事了,Hybris里没有CRM WebUI里F2的概念。所以只能靠自己人肉。前面的issue讲到product template page,在里面找到用来实现product list的component。然后找到这个pageination的实现:在这里显示...

CRM

CRM 基于 WebClient UI 技术的搜索界面如下图所示:

Hybris

Hybris是怎么实现的?

我问过Hybris成都同事了,Hybris里没有CRM WebUI里F2的概念。所以只能靠自己人肉。
前面的issue讲到product template page,在里面找到用来实现product list的component。

然后找到这个pageination的实现:

在这里显示文本:

Spring Theme的语法:

The theme support provided by the Spring web MVC framework enables you to further enhance the user experience by allowing the look and feel of your application to be themed. A theme is basically a collection of static resources affecting the visual style of the application, typically style sheets and images.
和ABAP的Online Text repository一样:

Spring Theme也支持i18n:


占位符{0}会被arguments的实际值, 来自model里的searchPageData.pagination.totalNumberOfResults的值替换。

SAP SADL和SAP Hybris DTO, 以及SAP C4C的transformation object

When you need a simpler or more convenient format for some of the data to display in JSPs
上面是从help.hybris.com摘录出来的原话,解释为什么我们需要DTO.
简单来说,就是因为Service Layer定义的model格式和UI需要的格式不是完全一样,如果UI直接消费Service Layer的model,代码写起来非常难看,而且会产生UI layer和service layer的强耦合。

更general地说,可以把DTO看成SADL的实现方式之一,处于BO(service layer) 和UI layer之间, 作为UI(consumer layer)消费Service layer的桥梁:

Hybris的DTO通常以data.java结尾,在我安装的6.5.0.0.23546这一版本里一共有445个DTO:

一个DTO例子:

在CRM Genil layer的实现里,虽然没有明文提出DTO的概念,但是从Genil layer这些方法的signature能看出这种DTO的思路其实也是蕴含在其中的:把数据从genil layer的format CRMT_PRODIL_DATA转换成UI layer的COMT_PRODUCT_MAINTAIN_UI.

CL_CRM_PRODIL_LONGTEXT

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。