4

我正在primefaces中处理JSF应用程序,因为我正在通过<p:messages>.

因此,当用户单击提交时,页面将被处理并触发 p:messages 对话框以向用户显示信息,

我提到了 Primefaces p:messages展示页面

它工作正常..但是在显示消息后,它不会自动关闭,要么我们需要手动关闭该对话框,要么它保持在打开阶段。

我需要它在向用户显示消息后自动关闭...我该怎么做...有人可以建议我该怎么做吗?

4

4 回答 4

7

<p:messages id="msgs">最终呈现为<div id="msgs">,然后使用给用户的事实消息更新其内容。

如果您想在延迟一段时间后清除消息屏幕,您应该setTimeout在 ajax 调用完成后使用 JavaScript 函数:

<p:commandButton ... 
        oncomplete="setTimeout(function() { $('#msgs").html(''); }, 3000);" />

函数的第二个参数setTimeout是以毫秒为单位的延迟。

另一种选择是<p:growl>改用。

于 2013-10-09T13:25:48.683 回答
1

Worked for me for <p:fileUpload>, which was in <p:dataList> and <h:panelGrid> elements.

    <p:fileUpload...
           oncomplete="setTimeout(function() { $('[id$=mr-upload-messages]').hide(1000); }, 2000);">

...
    <p:messages id="mr-upload-messages" showDetail="true" showSummary="false" closable="true"/>

I have used jQuery $('[id$=mr-upload-messages]' to find id's which ends with mr-upload-messages, because Primefaces adds it's unique identifier at the beginning of id.

于 2014-04-28T11:40:35.157 回答
1

$('#msgs').html('');立即在 3 秒内隐藏,但如果你想像 jquery hide 方法那样慢慢隐藏,请执行此操作..

<p:commandButton ... 
        oncomplete="setTimeout(function() { $('#msgs').hide(1000); }, 3000);" />

hide(1000);隐藏动作将在 1 秒内完成

于 2014-01-25T17:07:57.360 回答
-2

我引起了注意,并这样做了:

function hideMsg(){
$("#msg").delay(1000).hide(1000);
}

oncomplete="hideMsg()"
于 2017-09-09T16:53:39.883 回答