首页 > 解决方案 > p:dialog 未隐藏在 html 中并直接呈现在页面上

问题描述

我有一个p:dialog,通常不会在页面上呈现,当我激活它时,它会在新窗口中显示为弹出窗口。

<p:dialog id="dialogAdressvalidierung"
              header="Adresse auswählen"
              widgetVar="popupAdrValidierung"
              modal="true"
              draggable="true"
              showEffect=""
              hideEffect=""
              width="900"
              resizable="false"
              appendTo="@(body)">
    <!--dialogs content-->
</p:dialog>

html输出通常是这样的

<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-shadow ui-hidden-container ui-draggable"
     id="dialogAdressvalidierung"
     role="dialog"
     aria-hidden="true"
     aria-labelledby="dialogAdressvalidierung_title"
     style="width: 900px; height: auto;">
     <!--content-->
</div>

但是,在一种情况下,我需要刷新服务器上的页面。

FacesContext context = FacesContext.getCurrentInstance();
Application application = context.getApplication();
ViewHandler viewHandler = application.getViewHandler();
UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
context.setViewRoot(viewRoot);
context.renderResponse();

执行上面的java代码后,xhtml文件中的所有对话框都显示在html中,页面看起来非常扭曲。元素的一些属性,如aria-hidden="true"role="dialog",由divp:dialog

<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-shadow ui-hidden-container"
     id="dialogAdressvalidierung">
    <!--content-->
</div>

为什么 p:dialog 的 html 输出不再隐藏?如何使对话框不显示在页面上并且仍然仅在激活时弹出?

标签: jsfprimefacesjsf-2xhtml

解决方案


推荐阅读