2011-03-23 3 views
1

J'utilise Primefaces pour un projet et je vois de mauvais résultats avec IE vs chrome/firefox/safari en ce qui concerne les fenêtres de dialogue modales Primefaces et je pense que cela a à voir avec le placement de formulaire. Dans IE ces boîtes de dialogue n'apparaissent pas, mais je peux voir la transparence. En chrome/firefox ils vont bien. Quelle est la meilleure pratique pour les situations ci-dessous:Primefaces Dialogues Form Structure

Liste des éléments base xhtml page qui a une forme. Cette page contient plusieurs liens qui ouvrent des boîtes de dialogue ayant leurs propres événements ajax submit (commandButton, commandLink).

La boîte de dialogue doit-elle être située à l'intérieur ou à l'extérieur du formulaire de la page xhtml de base?
Le dialogue doit-il avoir sa propre forme?

Ci-dessous est une illustration:

<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> 

Répondre

3

Je ne vois pas dans votre exemple de code, mais il y a quelque temps j'ai eu un problème similaire. La raison en était: des formes imbriquées (les mêmes symptômes que vous décrivez: tout le travail du navigateur, sauf IE). Les formes imbriquées ne sont pas html valides. Certains navigateurs peuvent le gérer. IE ne peut pas.

Un bon test consiste à mettre l'ensemble de la sortie html (source du navigateur, pas la source jsf) dans le W3C Html validator et analyser les résultats.

Dans le Primefaces showcase l'élément h:form est toujours à l'intérieur du p:dialog. Voir this discussion.