Jsf 2 模态对话框无法正常工作
我正在开发一个JSF/Primefaces应用程序。我想防止页面隐藏在primefaces对话框后面。我尝试了以下代码:Jsf 2 模态对话框无法正常工作,jsf-2,primefaces,modal-dialog,java-ee-6,Jsf 2,Primefaces,Modal Dialog,Java Ee 6,我正在开发一个JSF/Primefaces应用程序。我想防止页面隐藏在primefaces对话框后面。我尝试了以下代码: <h:form id="form"> <p:dataTable id="types" value="#{resourcesTypesMBean.resourceTypes}" var="item" selection="#{resourcesTypesMBean.selectedResour
<h:form id="form">
<p:dataTable id="types" value="#{resourcesTypesMBean.resourceTypes}" var="item"
selection="#{resourcesTypesMBean.selectedResourceType}"
rowKey="#{item.id}" selectionMode="single">
<f:facet name="header" >
<table style="border: hidden">
<tbody >
<tr >
<td align="left" style="border: hidden">
<p:outputLabel value="List of Resources' Types"/>
</td>
<td align="right" style="border: hidden">
<p:commandButton
oncomplete="ResourceTypeDialogNew.show()"
icon="ui-icon-plus" title="add"/>
<p:commandButton id="btnDelete" title="delete
" actionListener="#{resourcesTypesMBean.deleteResourceType()}"
update="types" icon="ui-icon-trash" />
<p:button outcome="Resources.xhtml"
icon="ui-icon-arrowthick-1-w" title="back"/>
</td>
</tr>
</tbody>
</table>
</f:facet>
<p:column headerText="Name">
<p:outputLabel value="#{item.name}"/>
</p:column>
<p:column headerText="Code">
<p:outputLabel value="#{item.code}"/>
</p:column>
</p:dataTable>
</h:form>
<h:form id="newResourceTypeForm">
<p:dialog header="New Resource Type" widgetVar="ResourceTypeDialogNew"
resizable="false" modal="true" appendTo="@(body)" showEffect="explode"
hideEffect="explode" style="position: absolute ;"
id="dialogNewResourceType">
<p:panel id="panel">
<p:messages id="messages" />
<p:panelGrid id="newResourceType" columns="2" style="margin-bottom:10px">
<f:facet name="header">
<p:graphicImage value="/images/resource.png"/>
</f:facet>
<p:outputLabel value="Name" for="name"/>
<p:inputText id="name" value="#{resourcesTypesMBean.name}"
required="true" requiredMessage="The Name field is required." />
<p:outputLabel value="Code" for="code"/>
<p:inputText id="code" value="#{resourcesTypesMBean.code}"
required="true" requiredMessage="The Code field is required." />
</p:panelGrid>
<div align="right" >
<p:commandButton value="Save" style="margin-right: 5px" icon="ui-
icon-circle-check" oncomplete=" handleSubmitRequest(xhr, status,
args, 'ResourceTypeDialogNew','newResourceTypeForm');"
actionListener="#{resourcesTypesMBean.addResourceType()}"
update=":form:types, :growl" />
<p:commandButton value="Cancel"
oncomplete="ResourceTypeDialogNew.hide();"
icon="ui-icon-arrowrefresh-1-n" styleClass="ui-priority-primary"/>
</div>
</p:panel>
</p:dialog>
</h:form>
显示该对话框时,后面的页面被阻止,但保存
和取消
按钮工作不正常,用户将自动从应用程序注销。
我需要你的帮助。
更新:没有
modal=“true”appendTo=“@(body)”
它工作正常(包括保存和取消按钮)。现在无法检查解决方案的有效期,但以下情况看起来可疑:
当您检查呈现的XHTML代码时(例如通过Firefox中的Firebug),您可能会发现表单newResourceTypeForm
实际上是空的。我猜,使用appendTo=“@body”,对话框面板直接连接到body`-元素,并通过它在任何公式之外。这可以防止按钮进入工作区
- 将表单移动到
p:dialog
中,或
- 尝试删除
appendTo
- 尝试重写
appendTo=“@form”
希望其中一个可能有助于您继续前进,如果-ups-…现在无法检查解决方案生命周期,但以下内容看起来很可疑:
当您检查呈现的XHTML代码时(例如通过Firefox中的Firebug),您可能会发现表单newResourceTypeForm
实际上是空的。我猜,使用appendTo=“@body”,对话框面板直接连接到body`-元素,并通过它在任何公式之外。这可以防止按钮进入工作区
- 将表单移动到
p:dialog
中,或
- 尝试删除
appendTo
- 尝试重写
appendTo=“@form”
希望其中一个可以帮助您继续前进,如果-ups-…Hi Reema,请尝试分解上面的xhtml代码,直到只剩下重要的部分。这将提高有人能帮助你的变化。另外,resourcesTypesMBean.addResourceType()
背后的方法可能是出于兴趣。@L-Ray请检查更新。嗨,Reema,尝试分解上层xhtml代码,直到只剩下重要部分。这将提高有人能帮助你的变化。另外,resourcesTypesMBean.addResourceType()
背后的方法可能是出于兴趣。@L-Ray请检查update.with appendTo=“@form”或Droping appendTo,对话框后面的页面没有被阻止。感谢帮助:)解决方案是移动表单。。。进入p:dialog.with appendTo=“@form”或拖放appendTo,对话框后面的页面不会被阻止。感谢帮助:)解决方案是移动表单。。。进入p:对话框。