PrimeFaces异常处理程序和对话框覆盖

PrimeFaces异常处理程序和对话框覆盖,primefaces,jsf-2,Primefaces,Jsf 2,我在showcase中稍微扩展了PF ViewExpiredException处理示例。。。看 我有一个简单的按钮,它执行AJAX请求,然后通过oncomplete显示PF对话框。该操作被执行,抛出异常,显示会话过期对话框,但刚刚单击的按钮也希望显示一个对话框 您得到的是,异常对话框位于执行实际工作的对话框下 faces-config.xml: <?xml version='1.0' encoding='UTF-8'?> <faces-config version="2.2"

我在showcase中稍微扩展了PF ViewExpiredException处理示例。。。看

我有一个简单的按钮,它执行AJAX请求,然后通过oncomplete显示PF对话框。该操作被执行,抛出异常,显示会话过期对话框,但刚刚单击的按钮也希望显示一个对话框

您得到的是,异常对话框位于执行实际工作的对话框下

faces-config.xml:

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2"
              xmlns="http://xmlns.jcp.org/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
    <application>

        <action-listener>org.primefaces.application.DialogActionListener</action-listener>
        <navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler>
        <view-handler>org.primefaces.application.DialogViewHandler</view-handler>

        <el-resolver>org.primefaces.application.exceptionhandler.PrimeExceptionHandlerELResolver</el-resolver>

    </application>

    <factory>
        <exception-handler-factory>org.primefaces.application.exceptionhandler.PrimeExceptionHandlerFactory</exception-handler-factory>        
    </factory>

</faces-config>
问题:


如何使异常对话框出现在真实对话框的后面/上面?

我首先分析生成的客户端html(显示发生的位置)和相应的html,然后开始尝试CSS。因为我确实有时间,我把这个评论改成了一个答案,并开始自己尝试

在客户端htm中,我注意到异常对话框的z索引比正常对话框低,因为两者都是模态的,“垫片”的z索引比对话框低1。所以我尝试了:

在style属性中显式内联设置exception对话框的z索引:不起作用,似乎应用了一些“魔法”,可以更正,但超出了我的范围 更改xhtml文件中对话框的顺序不起作用,可能是由于一些魔法 将appendTo=@body添加到异常对话框:不起作用,另一个对话框也是body的直接子对话框,z索引更低 通过包含的css not inline设置异常对话框的z索引

<style>
#exception-handler-dialog-form\:exception-handler-dialog {
   z-index: 1005 !important;
}
</style>

这就完成了一个技巧,您可以将选择器更改为适合您的情况

我将首先分析生成的客户端html(显示发生的位置)和相应的html,然后开始尝试CSS。因为我确实有时间,我把这个评论改成了一个答案,并开始自己尝试

在客户端htm中,我注意到异常对话框的z索引比正常对话框低,因为两者都是模态的,“垫片”的z索引比对话框低1。所以我尝试了:

在style属性中显式内联设置exception对话框的z索引:不起作用,似乎应用了一些“魔法”,可以更正,但超出了我的范围 更改xhtml文件中对话框的顺序不起作用,可能是由于一些魔法 将appendTo=@body添加到异常对话框:不起作用,另一个对话框也是body的直接子对话框,z索引更低 通过包含的css not inline设置异常对话框的z索引

<style>
#exception-handler-dialog-form\:exception-handler-dialog {
   z-index: 1005 !important;
}
</style>

这样做的诀窍是,您可以将选择器更改为适合您的情况

首先,通过分析重新排序客户端html(显示发生的位置)和相应的html(使用CSS进行实验),我认为您可以学到很多关于这一点的知识,如果没有exceptionhandler和两个模态对话框,您也会遇到同样的问题。。。!!!从分析重新加载客户端html开始,这里是显示发生的地方,相应的html正在使用CSS进行实验,我认为您可以了解很多关于这一点,如果没有exceptionhandler和两个模态对话框,您也会遇到同样的问题。。。!!!难道你不能把appendTo=@body添加到对话框中,让它比其他任何东西都突出吗?@Melloware:不,也试过了。。。PF8.0似乎是一些没有被调查过的魔法。另一个对话框div也是主体的直接子对象,其z索引一直是“错误的”。在回答中没有提到它,将改变这一点。我想知道它是否是一个PrimeFaces.zindex++调用,该调用在异常对话框处理代码中丢失,该代码将自动使其成为页面上最高的zindex。@Melloware:很可能是。我没有时间调查,但这似乎可以解释我所看到的所有行为。但也可能是它们的创建顺序。@Kawu:如果您在询问之前尝试显式设置z索引,下次请,请,请,请,提及类似的事情,看到了吗?您不能也将appendTo=@body添加到对话框中,使它比其他任何东西都突出吗?@Melloware:no,也尝试过了。。。PF8.0似乎是一些没有被调查过的魔法。另一个对话框div也是主体的直接子对象,其z索引一直是“错误的”。在回答中没有提到它,将改变这一点。我想知道它是否是一个PrimeFaces.zindex++调用,该调用在异常对话框处理代码中丢失,该代码将自动使其成为页面上最高的zindex。@Melloware:很可能是。我没有时间调查,但这似乎可以解释我所看到的所有行为。但也可能是它们的创建顺序。@Kawu:如果您在询问之前尝试显式设置z索引,下次请,请,请,请,请,提及类似的内容,请参阅
<style>
#exception-handler-dialog-form\:exception-handler-dialog {
   z-index: 1005 !important;
}
</style>