我正在使用Primefaces 3.4.2和JSF 2.0
我在JSF页面的对话框弹出窗口中有以下内容。
<p:dialog header="Create New Request" style="font-weight:bold"
widgetVar="newDialog" resizable="false" id="newDlg"
showEffect="fade" hideEffect="fade" appendToBody="true"
modal="true" position="center top" width="850" height="450">
<p:panelGrid columns="2">
<h:outputLabel value="Employee" for="employee" />
<p:selectOneMenu id="employee" value="#{mymb.employee}"
converter="#{employeeConverter}">
<f:selectItems value="#{mymb.employeeItems}" var="emp"
itemLabel="#{emp.employeeName}" itemValue="#{emp.employeeNumber}"/>
<p:ajax listener="#{mymb.loadDepartments}" process="@this"/>
</p:selectOneMenu>
</p:panelGrid>
<p:separator />
</p:dialog>
如果我使用appendToBody="true"
,则不会调用selectOneMenu
Converter
类,但如果我将其设为appendToBody="false"
,则调用Converter
类
这可能是什么原因? appendToBody="false"
使我的弹出对话框无法使用,无法使用鼠标进行导航。
如何解决此问题?
答案 0 :(得分:1)
删除appendToBody
并在对话框中放入<h:form/>
(及其内容)。
appendToBody="false"
的目的是确保您的对话框在HTML输出的正文中(因此在主<h:form/>
内)呈现。
如果没有appendToBody="false"
,对话框可能最终被附加到<body/>
中标记的末尾,因此,其中的任何内容都不会被执行。
在您的对话框中添加<h:form/>
可确保即使它在<body/>
之外结束,它仍然可以提交到服务器