如何在显示消息后隐藏<p:messages>?</p:messages>

时间:2013-10-09 12:15:16

标签: jsf-2 primefaces

我正在研究Primefaces中的JSF应用程序,因为我通过<p:messages>向用户显示信息。

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

我引用了Primefaces p:messages展示页面

它工作正常。但是在显示消息后,它不会自动关闭,我们需要手动关闭该对话框或者它仍处于打开阶段。

我需要它在它向用户显示消息后自动关闭... 我怎么能这样做......任何人都可以建议我该怎么做?

4 个答案:

答案 0 :(得分:6)

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

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

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

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

另一种选择是使用<p:growl>代替。

答案 1 :(得分:1)

$('#msgs').html('');会立即隐藏在3秒内,但如果你想慢慢隐藏,那么jquery hide方法会这样做..

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

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

答案 2 :(得分:1)

为我<p:fileUpload>工作,<p:dataList><h:panelGrid>元素。

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

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

我使用jQuery $('[id$=mr-upload-messages]'查找以mr-upload-messages结尾的ID,因为Primefaces在id的开头添加了它的唯一标识符。

答案 3 :(得分:-2)

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

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

oncomplete="hideMsg()"