当与p:schedule结合使用时,PrimeFaces p:对话框不居中

时间:2015-08-10 13:04:05

标签: primefaces

版本: PrimeFaces 5.2

我拥有的内容:一个页面上有多个对话框,在单击docker-icon时会调用这些对话框。它适用于所有对话框,但包含<p:schedule>

的对话框

会发生什么:点击泊坞窗图标后,<p:dialog>会显示<p:schedule>

  • 位置粘在屏幕的右边缘。
  • 我可以垂直移动
  • 当我水平移动时,它只是水平调整大小(=宽度增加)。对话框仍然粘在右边框上。
  • 如果我最小化并最小化对话框,则它会显示在屏幕中央,并且没有发现任何不良行为。

我尝试了什么:我尝试使用<p:dialog> <p:outputPanel><p:schedule>提供的所有属性。改变行为的唯一因素是我用不同的东西替换<p:schedule>。然后对话框出现在屏幕中央。

相关守则:

<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()"/>

event.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
            xmlns:ui="http://java.sun.com/jsf/facelets"
            xmlns:h="http://java.sun.com/jsf/html"
            xmlns:p="http://primefaces.org/ui"
            xmlns:f="http://java.sun.com/jsf/core"
            xmlns:pe="http://primefaces.org/ui/extensions"
            xmlns:bnu="http://bootsfaces.net/ui">

    <p:schedule id="schedule" value="#{scheduleView.model}" widgetVar="myschedule" timeZone="GMT+2"/>

</ui:composition>

ScheduleView.java

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;
    }
}

问题:是否有解决方案可以避免此行为?我希望对话框完全按照它最小化后的方式显示。我可以以某种方式自己调用最小化/非最小化函数吗?

谢谢

2 个答案:

答案 0 :(得分:0)

  

我可以以某种方式自己调用minim / unminimize函数

根据文档不是没有定义javascript api,但可能有一个函数/方法(检查dialog.js源代码)。

这样做的原因是对话框在显示时会尝试根据子节点来定义其大小,在这种情况下是调度,但失败了。

  

是否有避免这种行为的解决方案?

解决方案是给对话框一个固定的和高度

答案 1 :(得分:0)

解决方法:除了不以对话框为中心外,它还会消除所有不受欢迎的行为。

<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">