调整大小后,Primefaces对话框粘贴到右侧屏幕边框

时间:2013-11-19 14:02:44

标签: jsf jsf-2 primefaces dialog positioning

我有一个selectOneMenu的对话框。 用户选择决定,根据决定按“确定”和对话框内容更改(呈现content1.xhtml或content2.xhtml)。

问题是初始组合非常小,而content1.xhtml包含一个宽表。 当用户选择“decision1”并按“ok”时,对话框将延伸到屏幕的右边界。 它不再居中,用户无法移动它(当他尝试时,它会拉伸而不是移动)。

<p:dialog id="mainDialogId" widgetVar="mainDialog" modal="true" appendToBody="true" >
    <p:messages autoUpdate="true" />
    <h:form id="mainForm">
        <p:panel rendered="#{bean.mode eq 'mode0'}">    
            <p:selectOneMenu id="mainCombo" value="#{bean.decision}" style="width: 100%;">
                <f:selectItem itemLabel="" itemValue="" noSelectionOption="true" />
                <f:selectItem id="decision1" itemValue="decision1" itemLabel="decision1" />
                <f:selectItem id="decision2" itemValue="decision2" itemLabel="decision2" />
            </p:selectOneMenu>
            <h:panelGroup style="display:block; text-align:right">
                <p:commandButton id="ok" value="ok"
                    actionListener="#{bean.handleDecision()}"
                    update=":#{p:component('mainForm')}, :#{p:component('form1')}, :#{p:component('form2')}" >
                </p:commandButton>
                <p:commandButton id="cancel" value="cancel" oncomplete="mainDialog.hide();" immediate="true" />
            </h:panelGroup>
        </p:panel>
    </h:form>
    <h:form id="form1" >
        <p:panel id="panel1" rendered="#{bean.mode eq 'mode1'}" >
            <ui:include src="/WEB-INF/contents/content1.xhtml" />
        </p:panel>
    </h:form>
    <h:form id="form2">
        <p:panel id="panel2" rendered="#{bean.mode eq 'mode2'}" >
            <ui:include src="/WEB-INF/contents/content2.xhtml" />
        </p:panel>
    </h:form>
</p:dialog>

这是一个显示对话框的按钮:

<p:commandButton value="Go" action="#{bean.prepare()}" update=":#{p:component('mainDialogId')}" oncomplete="mainDialog.show()" />

当我改变时:

update=":#{p:component('mainForm')}, :#{p:component('form1')}, :#{p:component('form2')}"

为:

update=":#{p:component('mainDialogId')}"

按'确定'后对话框消失。

设置固定的对话框宽度(宽度=“600”)会有所帮助,但它不是解决方案(在两种情况下看起来都很糟糕)。 我希望对话框在调整大小后重新定位。

请帮忙。

Primefaces 3.5

1 个答案:

答案 0 :(得分:1)

  

当我改为:

update=":#{p:component('mainDialogId')}"

这是正确的解决方案。坚持下去。您需要更新<p:dialog>本身以使其适合。


  按“确定”后

对话框消失。

如果按下“确定”按钮,则通过签入对话框的visible属性来防止发生这种情况:

<p:dialog ... visible="#{not empty param[ok.clientId]}">
    ...
    <p:commandButton binding="#{ok}" ... />
    ...
</p:dialog>