我正在研究Primefaces中的JSF应用程序,因为我通过<p:messages>
向用户显示信息。
因此,当用户点击提交时,页面将被处理并且p:messages对话框将被触发以向用户显示信息,
我引用了Primefaces p:messages展示页面
它工作正常。但是在显示消息后,它不会自动关闭,我们需要手动关闭该对话框或者它仍处于打开阶段。
我需要它在它向用户显示消息后自动关闭... 我怎么能这样做......任何人都可以建议我该怎么做?
答案 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()"