Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在primefaces中单击ESC(ESC)时关闭所有对话框_Java_Jsf_Primefaces - Fatal编程技术网

Java 在primefaces中单击ESC(ESC)时关闭所有对话框

Java 在primefaces中单击ESC(ESC)时关闭所有对话框,java,jsf,primefaces,Java,Jsf,Primefaces,我正在使用4-5个primefaces对话框。单击ESC时,我希望关闭所有打开的对话框。通过使用widgetVar指定的客户端对象调用对话框的hide()函数。因此,如果您将p:dialog定义为: <p:dialog widgetVar="dialog1" header="Dialog 1"/> <p:dialog widgetVar="dialog2" header="Dialog 2"/> 然后在您的组件中参考closeAll()命令: <p:hotkey

我正在使用4-5个primefaces对话框。单击ESC时,我希望关闭所有打开的对话框。

通过使用
widgetVar
指定的客户端对象调用对话框的
hide()
函数。因此,如果您将
p:dialog
定义为:

<p:dialog widgetVar="dialog1" header="Dialog 1"/>
<p:dialog widgetVar="dialog2" header="Dialog 2"/>
然后在您的组件中参考
closeAll()
命令:

<p:hotkey bind="esc" handler="closeAll()"/>
<p:commandButton value="ESC" onclick="closeAll()"/>

虽然这篇文章很旧,但答案是一个静态解决方案,下面是一个使用jQuery的动态解决方案

function escDialog() {
   $(document).keyup(function(e) {
       if (e.keyCode == 27) { // esc code is 27 
           closeAllDialog() ;
       }   
   });
}

function closeAllDialog() {
   for (var propertyName in PrimeFaces.widgets) {
     if (PrimeFaces.widgets[propertyName] instanceof PrimeFaces.widget.Dialog ||
         PrimeFaces.widgets[propertyName] instanceof PrimeFaces.widget.LightBox) {
         PrimeFaces.widgets[propertyName].hide();
     }
   }
}
然后在document.ready中调用
escDialog()


希望这有帮助

这个标题和描述很有意义,因为您明确地指定了操作(单击),但我必须承认这完全令人困惑。
<p:hotkey bind="esc" handler="closeAll()"/>
<p:commandButton value="ESC" onclick="closeAll()"/>
function escDialog() {
   $(document).keyup(function(e) {
       if (e.keyCode == 27) { // esc code is 27 
           closeAllDialog() ;
       }   
   });
}

function closeAllDialog() {
   for (var propertyName in PrimeFaces.widgets) {
     if (PrimeFaces.widgets[propertyName] instanceof PrimeFaces.widget.Dialog ||
         PrimeFaces.widgets[propertyName] instanceof PrimeFaces.widget.LightBox) {
         PrimeFaces.widgets[propertyName].hide();
     }
   }
}