jsf-2 - 隐藏 p :messages after certain seconds

标签 jsf-2 primefaces

如何使用 jsf primefaces 在指定的秒数后隐藏消息(对于 onedit 和 oncancel 或单独);

<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
<p:dataTable id="platform" var="platform" value="#{platformMB.platformList}" editable="true">  
   <p:ajax event="rowEdit" listener="#{platformMB.onEdit}" 
           update=":formConfig:messages"/>
   <p:ajax event="rowEditCancel" listener="#{platformMB.onCancel}" 
           update=":formConfig:messages"/>  
.... 

最佳答案

您可以通过 Hook 特殊的 pfAjaxComplete 事件来在 PrimeFaces ajax 请求完成时调用 JS 函数。

$(document).on("pfAjaxComplete", function() {
    // ...
});

可以使用JS setTimeout()安排在 n 毫秒后调用函数。

setTimeout(function() {
    // ...
}, 1000);

您可以使用 jQuery $.hide() ,或者更好,$.slideUp()隐藏 DOM 元素。

$(element).slideUp();

您当然不想太早隐藏它们。假设我们从 3 秒的最小超时开始作为人眼的“预热”时间,然后为消息中的每个单词考虑 200 毫秒。

现在,让我们把它们放在一起:

$(document).on("pfAjaxComplete", function() {
    var $messages = $(".ui-messages div");

    if ($messages.length) {
        var wordCount = $messages.text().split(/\W/).length;
        var readingTimeMillis = 3000 + (wordCount * 200);

        setTimeout(function() {
            $messages.slideUp();
        }, readingTimeMillis);
    }
});

关于jsf-2 - 隐藏 p :messages after certain seconds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32400229/

相关文章:

java - 从数据库访问和使用 .jsf 文件

javascript - PrimeFaces confirmDialog 中的倒数计时器

java - 在 JSF bean 之间传递数据

jsf-2 - 在 weblogic 10.3 中部署最新 JSF 版本的步骤

jsf - JSF <h :commandButton> 中 PrimeFaces 的 oncomplete 属性

jsf-2 - 使用 <p :commandButton> 重定向

performance - JSF 性能改进

jsf - PrimeFaces 状态栏是静态的而不是动画的

templates - JSF/PrimeFaces - <p :layout> 的模板

jsf - jftfdi jffi 对我的查询字符串做了什么?