云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

数据库服务器_中国电信企业邮箱登录_高性能

小七 141 0

最近我在一个内部系统中玩的时候,淘客分佣系统,碰巧发现了一个小问题,如下面的gif文件所示。问题是在高级搜索中,搜索结果,如果我先单击排序,然后单击某个值进行筛选,则不会显示筛选和排序图标。

下面是cellerator使用的一些图标。除了升序和降序图标之外,还有比下面列出的更多的图标。在这个博客的后面部分,我会提到他们。

然后我联系了我们的开发者。在不到3天的时间里,发布了一个bug修复说明2615706–表过滤器/排序图标偶尔丢失。效率很高?

我很好奇。因此,我想检查如何修复错误。我想看看我是否可以通过检查错误是如何修复的来找出图标是如何显示的。这是在注释

中更正的内容,非常直截了当。值设置不正确。但是这和图标显示有什么关系呢?

我试着从这段程序开始调试

程序生成了一个隐藏的输入传递值,并生成了如下HTML编码

这与Javascript有关吗?我不是Javascript方面的专家,至少目前是这样。因此,我想在不涉及Javascript的情况下进一步尝试。下一步是使用F12来分析这个图标屏幕元素

然后让我们观察这个元素的样式。它继承了一个属性来拥有一个背景图像。

这个图像是什么?让我们转到SE80并检查这个文件。单元1_过滤器.gif是我们正在分析的图标。令人惊讶的是,它不是一个过滤器图标加一个排序图标,物联网的应用实例,而是一个过滤器和排序图标。

这个图标可以根据不同的情况进行更改,这是如何实现的?

继续办理F12登机手续。既然它是继承的,那么我们至少检查一个以上的级别。

这次检查样式时,我们可以看到背景图像来自元素.样式而不是级联样式表属性。这个背景图片也可以在左侧的html源代码中找到。这表示此图像是通过ABAP程序设置的。对我这样的白痴来说是个好消息。当进一步检查上面的元素时,我们可以看到标签类有"th clr cel sorted filtered"和"th clr cel sorted asc",它们显示了该列的筛选和排序状态。

对于WebUI,我们通常使用ABAP类来呈现html中几乎所有的屏幕元素。ABAP类通常命名如下:

CL_uxhtmlb_x216;

在注释2615706中,大数据信息,使用了CL_x216;THTMLB_x216;CELLERATOR,那么我想在这个类中首先尝试一下。我盲目地用"th clr cel sorted filter"进行搜索

它引导我使用方法RENDER\u CELL。检查编码,它不会告诉如何确定图标图片。如果你还记得我们在SE80登记的时候,这里不仅有celler\u up1的文件_过滤器.gif,还有up2、up3文件。我想假设图片名称将使用一些逻辑组成。幸好这种方法时间不长。因此,通过扫描编码,我找到了以下编码。这里是图标文件名的确切组成位置。

在上述逻辑中,有编码读取gt\u排序的索引。这就解释了为什么在SE80中有名为1、2或3的文件。那么这个函数是什么?这是Note2131434–表上的多列排序引入的函数。在此注释之前,搜索结果只能按一列排序。现在,如果调用PersonalizePopup,最多可以定义3列进行排序。如果仔细检查图标,您可能会注意到排序图标上或下的小点。1点,2点,3点。这不是一个有趣的功能吗?

我们已经找到排序和筛选图标是如何确定的。但我们仍然对以下问题有疑问:

为什么在注释2615706之前的方法RENDER\u HIDDEN\u字段中编码会导致图标不显示?

让我们在CL\u THTMLB\u CELLERATOR method RENDER\u HIDDEN\u字段和method RENDER\u CELL中设置断点。然后在RENDER\u HIDDEN\u FIELDS,debug模式下,让我们在note 2615706之前模拟错误的情况。将-列的值错误地设置为-值。

然后是组成文件名的逻辑。而且这个文件不存在。图标就这样消失了。

现在一切都清楚了吗?还没有。刚才调试的时候,我们可以看到RENDER方法的调用发生在RENDER方法的调用之前。那么这是否意味着这个时间的错误值是因为上一次在RENDER\u CELL方法中设置的错误?

让我们做以下步骤,同时模拟错误的情况,在注2615706之前。同时打开F12网络页签

第一步:排序;

第二步:排序后过滤;

第三步:过滤后再排序;

让我们在网络页签上查看结果。一条红线显示浏览器试图显示但失败的错误文件。其他两个文件已成功显示。我们要检查图标文件前一行的详细信息

步骤1,asc已从前端发送到后端,正确的文件名已组成。

步骤2,方法渲染隐藏的\u字段,用上一步中的列名覆盖asc。错误的值被发送到前端并存储在前端。设置过滤器时,读取了错误的排序状态,后端无法解释。

第三步,再次点击排序,触发全新的asc事件。这样就可以正确地编写文件名,并显示图标了。

现在我终于觉得舒服了。

为了避免可能出现的混乱,大数据定义,让我总结一下这个博客的一些要点:

,淘客返利系统