PrimeFaces p:对话框与p:明细表组合时不居中

PrimeFaces p:对话框与p:明细表组合时不居中,primefaces,Primefaces,版本:PrimeFaces 5.2 我拥有的内容:一个页面,在该页面上单击docker图标时会调用多个对话框。除了包含 发生的情况:单击docker图标时,出现带有的 该位置粘贴在屏幕的右边缘 我可以垂直移动它 当我水平移动它时,它只会水平调整大小(=宽度增加)。对话框仍然粘在右边框上 如果我最小化并取消了对话框的大小,那么它将显示在屏幕的中心,并且没有发现任何不良行为 我尝试了什么:我尝试了使用和提供的所有属性。唯一改变行为的是当我用不同的东西替换时。然后对话框显示在屏幕中央 相关代码:

版本:PrimeFaces 5.2

我拥有的内容:一个页面,在该页面上单击docker图标时会调用多个对话框。除了包含

发生的情况:单击docker图标时,出现带有

  • 该位置粘贴在屏幕的右边缘
  • 我可以垂直移动它
  • 当我水平移动它时,它只会水平调整大小(=宽度增加)。对话框仍然粘在右边框上
  • 如果我最小化并取消了对话框的大小,那么它将显示在屏幕的中心,并且没有发现任何不良行为
我尝试了什么:我尝试了使用
提供的所有属性。唯一改变行为的是当我用不同的东西替换
时。然后对话框显示在屏幕中央

相关代码:

<p:dialog 
    id="eventDialog"
    widgetVar="event"
    position="center"
    minimizable="true"
    maximizable="true">

    <p:outputPanel id="eventPanel">
        <ui:include src="/WEB-INF/pages/event.xhtml"/>
    </p:outputPanel>
</p:dialog>
[...]
//this is where the event-dialog is called from
<p:menuitem value="Events" icon="#{resource['images/Arrows-icon.png']}" onclick="PF('event').show()"/>
问题:是否有避免这种行为的解决方案?我希望对话框在未动画化后的显示方式完全相同。我能自己调用minimize/unminimize函数吗

多谢各位

我能自己调用minimize/unminimize函数吗

根据文档的说法,在ther中没有定义javascript api,但可能有一个函数/方法(检查dialog.js源代码)

这是因为对话框在显示时试图根据其子项、本例中的计划定义其大小,但失败了

有没有办法避免这种行为


一种解决方案是为对话框提供一个固定高度的解决方案:除了不使对话框居中外,它还消除了所有不需要的行为

<p:dialog 
id="eventDialog"
widgetVar="event"
position="center"
minimizable="true"
maximizable="true"
onshow="PF('event').toggleMaximize(); PF('event').toggleMaximize();>

<p:outputPanel id="eventPanel">
    <ui:include src="/WEB-INF/pages/event.xhtml"/>
</p:outputPanel>

“我可以自己调用最小化/取消最小化函数吗”不是根据文档,但它们可能在那里(查看dialog.js sourcecode)。但我认为这与对话框最初不知道时间表的大小有关,因此它猜错了。“有没有避免这种行为的解决方案?”一个解决方案可能是给对话一个固定的高度,并将评论转换成回答。即使我自己已经找到答案,我也会接受你的答案。谢谢你的努力。
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import org.primefaces.model.DefaultScheduleModel;
import org.primefaces.model.ScheduleModel;

@Named
@ViewScoped
public class ScheduleView implements Serializable{

    private ScheduleModel model;

    @PostConstruct
    public void init(){
        model = new DefaultScheduleModel();
    }

    public ScheduleModel getModel() {
        return model;
    }

    public void setModel(ScheduleModel model) {
        this.model = model;
    }
}
<p:dialog 
id="eventDialog"
widgetVar="event"
position="center"
minimizable="true"
maximizable="true"
onshow="PF('event').toggleMaximize(); PF('event').toggleMaximize();>

<p:outputPanel id="eventPanel">
    <ui:include src="/WEB-INF/pages/event.xhtml"/>
</p:outputPanel>
<p:dialog id="eventDialog"
                  widgetVar="event"
                  position="center"
                  minimizable="true"
                  maximizable="true"
                  height="470" width="600">