覆盖PCMBackoffice中的FullTextSearchController

2020-09-06 00:07发布

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

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


我正在尝试覆盖PCM Backoffice中的FullTextSearchController,以便在用户登录时不填充产品列表。我希望用户明确搜索产品。

我可以通过重写FullTextSearchController并定义自己的控制器来做到这一点。

我正在运行的问题是,当我单击目录选择时,该事件不会更新内容浏览器中的内容。 OOTB FullTextSearchController可以很好地工作。

我已经复制了套接字连接。

附件是我的definition.xml文件。 definition.xml

附件是我的widgets.xml文件。 widgets.xml

12772-definition.txt (1.3 kb)

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

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


我正在尝试覆盖PCM Backoffice中的FullTextSearchController,以便在用户登录时不填充产品列表。我希望用户明确搜索产品。

我可以通过重写FullTextSearchController并定义自己的控制器来做到这一点。

我正在运行的问题是,当我单击目录选择时,该事件不会更新内容浏览器中的内容。 OOTB FullTextSearchController可以很好地工作。

我已经复制了套接字连接。

附件是我的definition.xml文件。 definition.xml

附件是我的widgets.xml文件。 widgets.xml

12772-definition.txt (1.3 kb)
付费偷看设置
发送
4条回答
半个程序猿
1楼 · 2020-09-06 00:55.采纳回答

通过自定义,可以防止在文本不为空白时执行搜索。 如果用户留空输入并单击目录选择,添加一些过滤器,您的搜索也将跳过。 为了在用户单击目录,目录版本(搜索输入为空)时处理搜索执行,您必须基于 AdvancedSearchData 结构构建更复杂的条件。

  @Override
  受保护的boolean doSimpleSearch()
  {
      boolean searchExecuted = false;

      最终AdvancedSearchInitContext上下文= getValue(MODEL_INIT_CONTEXT,AdvancedSearchInitContext.class);

      最终List  catalogVersionConditions = context.getAdvancedSearchData()。getConditions(" catalogVersion");

      如果(StringUtils.isNotBlank(getSearchText())|| CollectionUtils.isNotEmpty(catalogVersionConditions))
      {
          searchExecuted = super.doSimpleSearch();
      }

      返回searchExecuted;
  }

  

当然,以上代码不是最终解决方案。 您必须考虑其他搜索部分,例如过滤器。 所有这些数据都存储在 context.getAdvancedSearchData()中,因此您应该仔细验证它们。

我希望我能大致解释它是如何工作的。 干杯!

哎,真难
2楼-- · 2020-09-06 00:48

你好,

在用户更改目录时,可能会覆盖过多的OOTB逻辑,这些逻辑无法负责初始化高级搜索上下文。 请分享您的控制器代码以进行调查。 在OOTB中,简单的搜索在更改目录时在方法 com.hybris.backoffice.widgets.fulltextsearch.FullTextSearchController#initializeWithContext 中执行。

干杯! 托梅克

95年老男孩
3楼-- · 2020-09-06 00:43

嗨,托马斯,

我只是重写了此方法。 当内容的长度为零时不执行搜索。 我确保在单击目录版本时不会使用此方法。

  @Override
      受保护的boolean doSimpleSearch()
      {
          boolean searchExecuted = false;
 
          如果(StringUtils.isNotBlank(getSearchText()))
          {
              searchExecuted = super.doSimpleSearch();
          }
 
          返回searchExecuted;
      }


  

感谢Pratik

渐行渐远_HoldOn
4楼-- · 2020-09-06 00:47

我的糟糕,我重写了 initializeWithContext 方法,但没有声明负责将侦听器添加到套接字的注释

我在课堂上删除了此方法,效果很好。

感谢Pratik

一周热门 更多>