Primefaces< p:tooltip>在另一个Ajax请求后不会消失 [英] Primefaces <p:tooltip> does not disappear after another Ajax request

查看:59
本文介绍了Primefaces< p:tooltip>在另一个Ajax请求后不会消失的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我的<p:dataTable>中有一些工具提示. 当我更改dataTable的页面时,当另一页面刷新时,我将鼠标移到任何工具提示上-它会显示,但是在加载另一页面后,工具提示永远不会消失. ,p:remoteCommand,但没有任何帮助,实际上这又提出了另一个Ajax请求,并且工具提示也卡住了.仅整页重新加载F5有效.

Let's say I have some tooltips in my <p:dataTable>. When I change the page of dataTable and while another page laods, I move mouse on any tooltip - it shows up, but after the other page is loaded tooltip never disappears.. I've tried to update this, using p:ajax, p:remoteCommand but nothing helps, actually this made another Ajax request and tooltips also stucked. Only full page reload F5 works.

有人遇到过这样的问题吗? 非常感谢您的帮助!

Has anyone encountered with such problem? Thanks a lot for your help!

推荐答案

这看起来像是PrimeFaces错误,但是您可以通过隐藏有关JS分页事件的工具提示来解决此问题.

This looks like a PrimeFaces bug, but you can work around it by hiding tooltips on pagination events via JS.

<p:dataTable value="#{bean.val}" var="row" rowIndexVar="rowIndex" rows="10" paginator="true">
    <p:ajax event="page" oncomplete="hideTooltips();" />

    <p:column>
        <h:outputText id="text" value="#{row}" />
        <!--
            since p:tooltip is located inside an iterative component (p:dataTable), we can't
            just define a static widgetVar value, because there will be a widget instance for
            each iteration, and each instance must have a unique widgetVar value, so we'll
            use rowIndex to achieve that
        -->
        <p:tooltip widgetVar="textTipVar#{rowIndex}" for="text" value="Tip" />
    </p:column>
</p:dataTable>
<script>
    function hideTooltips() {
        /*
            we've defined a bunch of widgetVars with a dynamic name, so we'll iterate over
            all widgets on the page and find the ones we need by looking for a known
            widgetVar prefix
        */
        for (var w in PrimeFaces.widgets) {
            if (w.indexOf('textTipVar') === 0) {
                PrimeFaces.widgets[w]._hide();
            }
        }
    }
</script>

这使用了未记录的工具提示窗口小部件方法_hide,在更新到另一个PrimeFaces版本时,例如,请记住这一点.方法的名称可能会更改. PrimeFaces.widgets对象也未记录.

This uses an undocumented Tooltip widget method _hide, keep that in mind when updating to another PrimeFaces version, e.g. the method's name could change. The PrimeFaces.widgets object is undocumented too.

这篇关于Primefaces&lt; p:tooltip&gt;在另一个Ajax请求后不会消失的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆