我正在使用Primefaces进行项目,我看到IE vs chrome / firefox / safari关于模态Primefaces对话框窗口的结果不好,我认为它与表单放置有关。在IE中,这些对话框不会出现,但我可以看到透明度。在chrome / firefox中他们很好。以下情况的最佳做法是什么:
列出具有一个表单的项目基础xhtml页面。这个页面有几个 打开具有自己的ajax提交的对话框的链接 (commandButton,commandLink)事件。
对话框是否应位于基本xhtml页面的表格内或之外?
对话框应该有自己的形式吗?
以下是插图:
<html>
<ui:composition>
<ui:define name="content">
<h:form id="xyz">
//main page content here, commandButtons, commandLinks...etc
</h:form>
<dc:zoomDialog/>
</ui:define>
</ui:composition>
</html>
<!-- zoomDialog maps to the below -->
<html>
<ui:component>
<h:form id="dialogFrm">
<p:dialog widgetVar="zoomDlg" modal="true" styleClass="dialog dialog2"
draggable="false" resizable="false" showEffect="fade"
hideEffect="fade">
//dialog content here, commandButton, commanLink...etc
</p:dialog>
</h:form>
</ui:component>
答案 0 :(得分:3)
我在你的示例代码中没有看到它,但前段时间我遇到了类似的问题。原因是:嵌套表单(与您描述的症状相同:所有浏览器都工作,IE除外)。嵌套表单不是有效的HTML。有些浏览器可以处理它。 IE不能。
一个好的测试是将整个html outpout(浏览器源,而不是jsf源)放入W3C Html validator并分析结果。
在Primefaces showcase中,h:form
元素始终位于p:dialog
内。请参阅this discussion。