我有一個在打開時插入新組件('show'狀態)時已調整大小的Prime Faces p:dialog
。然而,它的位置並沒有改變,它的大小從左下角直到頁底。如何在調整大小後在Prime Faces中放置p:對話框
我每次動態呈現新組件時都需要重新定位它。有沒有JavaScript函數可以調用它的小部件來重新定位?
我使用PrimeFaces 3.5和Mojarra 2.1.13。
我有一個在打開時插入新組件('show'狀態)時已調整大小的Prime Faces p:dialog
。然而,它的位置並沒有改變,它的大小從左下角直到頁底。如何在調整大小後在Prime Faces中放置p:對話框
我每次動態呈現新組件時都需要重新定位它。有沒有JavaScript函數可以調用它的小部件來重新定位?
我使用PrimeFaces 3.5和Mojarra 2.1.13。
這是應該在你的情況下,工作的方法:
豆代碼:
@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;
}
}
查看代碼:
<h:commandButton value="Show dialog">
<f:ajax listener="#{bean.onBeforeShowDialog}" render="dialog" />
</h:commandButton>
<p:dialog id="dialog" visible="#{bean.visible}">
content
<h:commandButton value="Hide dialog">
<f:ajax listener="#{bean.onBeforeHideDialog}" render="dialog" />
</h:commandButton>
</p:dialog>
第二種方法也應努力是JavaScript:
要<h:head />
添加:
<h:outputScript library="primefaces" name="jquery/jquery.js" />
<script>
function centerAndShowDialog(dialog)
{
$(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();
}
</script>
查看代碼:
<p:commandButton id="basic" value="Show Dialog" onclick="centerAndShowDialog(dlg);" type="button" />
<p:dialog id="dialog" header="Dynamic Dialog" widgetVar="dlg" dynamic="true">
Content
</p:dialog>
注:因爲我沒有使用PrimeFaces,我沒有測試這個代碼,所以我希望它工作得很好,但想法就在這裏!
而不是$(對話框)使用dialog.jq,例如:dialog.jq.css(「top」,...); – Hubert
大聲笑,這是一個無關緊要和令人反感的問題。你真的必須爲你的善良人工作。回到不同的是,我已經在發佈之前使用PrimeFaces 3.5進行了測試。謝謝。 – Hubert
我在重新定位對話框時遇到了類似的問題。我用dialogWidgetVar.initPosition();正如本文所描述的那樣。 http://forum.primefaces.org/viewtopic.php?f=3&t=16893。你可以在Ajax Request中或者在我的情況下在tabView中使用它。 – kdoteu
我有一個類似的情況與對話框中的TabView。 TabView內容是動態加載的。
<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>
正如您所看到的,它會在每次更改Tab時調用函數initPosition()。該功能將重新定位您的對話框。您可以在幾種情況下使用此功能。
很高興知道:) – djmj
如果渲染完整號碼:對話,這有區別嗎?從邏輯上講,它應該重新計算它的位置。 –
我在我的命令按鈕的'update'屬性中添加了'dialogUpload',並且在上傳完成後重新定位對話窗口。但是,更新操作正在關閉它,並且每次調用此命令按鈕時都必須再次打開該對話框。 –