2010-04-05 6 views
0

J'ai des problèmes inattendus avec le panneau modal richfaces (3.3.2). Lorsque j'essaie de l'ouvrir, le navigateur ouvre deux panneaux au lieu d'un: l'un est au centre, l'autre dans le coin supérieur gauche. D'ailleurs, aucun évanouissement n'arrive. Aussi j'ai trois modes: voir, éditer, nouveau - et quand j'ouvre mon panneau il devrait montrer soit "Créer nouveau ..." ou "Editer ..." dans l'en-tête et en fait il montre mais pas dans l'en-tête comme le Ce dernier n'est pas rendu du tout, même s'il le devrait, parce que j'ai mis le bon mode en action avant d'ouvrir ce panneau modal. En outre, cela fonctionne très bien sur toutes les autres pages que j'ai faites et il y a des dizaines de telles pages dans mon application. Je ne peux pas comprendre ce qui ne va pas ici. La seule façon de le réparer est de supprimer < a4j: keepAlive/> de la page qui est très étrange, à mon humble avis.Panneau modal Richfaces et a4j: keepAlive

Je ne suis pas sûr si le code sera utile ici car il fonctionne très bien partout dans mon application, mais ce cas seulement. Donc, si vous le mettez sur votre page, cela fonctionnera probablement sans problème. Ma seule question est: y a-t-il des problèmes cachés ou rares dans l'interaction de ces deux éléments (< riche: modalPanel > et < a4j: keepAlive >)? Ou dois-je passer encore deux ou trois jours à chercher une virgule, une parenthèse ou quoi que ce soit d'autre dans mon code? :)

Pour les plus curieux. Panneau lui-même:

<!-- there's no outer form --> 
    <rich:modalPanel id="panel" autosized="true" minWidth="300" minHeight="200"> 
     <f:facet name="header"> 
      <h:panelGroup id="panelHeader"> 
      <h:outputText value="#{msg.new_smth}" rendered="#{MbSmth.newMode}"/> 
      <h:outputText value="#{msg.edit_smth}" rendered="#{MbSmth.editMode}"/> 
      </h:panelGroup> 
     </f:facet> 
     <h:panelGroup id="panelDiv"> 
      <h:form > 
       <!-- fields and buttons --> 
      </h:form> 
     </h:panelGroup> 
    </rich:modalPanel> 

un des boutons panneau ouvert:

<a4j:commandButton id="addBtn" 
      reRender="panelHeader, panelDiv" 
      value="#{form.add}" 
     oncomplete="#{rich:component('panel')}.show()" 
      action="#{MbSmth.add}" 
      image="create.gif"/> 

action invoquée sur le bouton clic:

public void add() { 
    curMode = NEW_MODE; // initial mode is VIEW_MODE 
    newSmth = new Smth(); 
} 

cocher Mode:

public boolean isNewMode() { 
    return curMode == NEW_MODE; 
} 

public boolean isEditMode() { 
    return curMode == EDIT_MODE; 
} 

Répondre

0

rappeler que le modalPanel est toujours là, b c'est caché. Je pense que le keepAlive montre cela à tout moment.

0

Ajoutez le paramètre domElementAttachment = "parent" à rich: modalPanel, et l'éditeur fonctionnera correctement.

Questions connexes