Jsf 2 调整p:对话框大小后,如何在基本面中定位该对话框
我有一个Prime FacesJsf 2 调整p:对话框大小后,如何在基本面中定位该对话框,jsf-2,primefaces,dialog,Jsf 2,Primefaces,Dialog,我有一个Prime Facesp:dialog,当打开(“显示”状态)时插入新组件时,该对话框的大小已经调整。然而,它的位置并没有改变,它的大小从左下角一直增加到页面底部 每次动态渲染新组件时,我都需要重新定位它。是否有任何JavaScript函数可以调用其小部件来重新定位 我将PrimeFaces 3.5与Mojarra 2.1.13一起使用。这是一种适用于您的情况的方法: Bean代码: @ManagedBean @ViewScoped public class Bean { pri
p:dialog
,当打开(“显示”状态)时插入新组件时,该对话框的大小已经调整。然而,它的位置并没有改变,它的大小从左下角一直增加到页面底部
每次动态渲染新组件时,我都需要重新定位它。是否有任何JavaScript函数可以调用其小部件来重新定位
我将PrimeFaces 3.5与Mojarra 2.1.13一起使用。这是一种适用于您的情况的方法: Bean代码:
@ManagedBean
@ViewScoped
public class Bean
{
private boolean visible;
public void setVisible(boolean visible)
{
this.visible = visible;
}
public boolean getVisible()
{
return this.visible;
}
public void onBeforeShowDialog(AjaxBehaviorEvent event)
{
visible = true;
}
public void onBeforeHideDialog(AjaxBehaviorEvent event)
{
visible = false;
}
}
查看代码:
内容
第二种方法也应该是JavaScript:
要添加到
:
功能中心和显示对话框(对话框)
{
$(dialog.css(“top”,Math.max(0,($(window.height()-$(dialog.outerHeight())/2)+$(window.scrollTop())+“px”);
$(dialog.css(“left”,Math.max(0,($(window.width()-$(dialog.outerWidth())/2)+$(window.scrollLeft())+“px”);
dialog.show();
}
查看代码:
内容
注意:因为我没有使用PrimeFaces,所以我还没有测试过这段代码,所以我希望它能很好地工作,但是想法就在这里 我也遇到过类似的情况,对话框中有一个选项卡视图。选项卡视图内容已动态加载
<p:dialog widgetVar="dialogWidgetVar">
<p:tabView value="#{tabBean.tabs}" var="tabsVar"
onTabShow="PF('dialogWidgetVar').initPosition();" dynamic="true">
<p:tab id="Tab#{tabsVar.id}" title="#{tabsVar.name}">
...
</p:tab>
</p:tabView>
</p:dialog>
...
如您所见,每次更改选项卡时,它都会调用函数initPosition()。此函数将重新定位对话框。您可以在几种情况下使用此功能
如果渲染完整的p:对话框,是否会产生影响?从逻辑上讲,它应该重新计算它的位置。我将
dialogUpload
添加到我的命令按钮的update
属性中,在上传之后,它可以完美地重新定位对话框窗口。但是,更新操作正在关闭它,每次调用此命令按钮时,我都必须再次打开对话框;这很有帮助,非常感谢!