版本: 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;
}
}
问题:是否有解决方案可以避免此行为?我希望对话框完全按照它最小化后的方式显示。我可以以某种方式自己调用最小化/非最小化函数吗?
谢谢
答案 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">