2010-11-19 21 views
1

J'ai un problème avec montrant un <rich:modalPanel> plus d'une fois. J'ai un formulaire qui a <a4j:commandlink onclick="#{rich:component('mp')}.show()" (ont également essayé un rich:componentControl).riche: modalpanel ne montrera pas plus que lorsque invoqué à partir de la forme

Cette approche fonctionne bien une fois. À l'intérieur du panneau modal, j'ai un nouveau formulaire avec une action attachée au bouton de soumission (a4j:commandButton). Lorsque cette action se termine, le modalpanel est masqué en utilisant la même approche que ci-dessus avec oncomplete="#{rich:component('mp')}.hide()", et le formulaire contenant le lien de commande est reRendered.

Maintenant, le problème est que le commandLink pour montrer le modalpanel ne fonctionne plus. Si je mets un js alert('something') dans l'événement onclick je peux voir que l'événement onclick est déclenché, mais le modalpanel n'est pas rendu.

Hope this est assez d'information ... Je peux ajouter un code source plus tard si nécessaire

Merci

edit: est ici un peu plus de code:

<a4j:form prependId="false" ajaxSubmit="true"> 
    <a4j:outputPanel id="createActivityPanel"> 
     <h:panelGrid columns ="2"> 
      <h:outputLabel value="#{msg.createActivityExpectedParticipantsLabel}" /> 
      <h:panelGrid columns ="2"> 
       <h:outputLabel value="#{msg.createActivityAvailablePointsLabel}: #{sessionBean.loggedInUser.letspoints}" /> 
       <a4j:commandLink value="#{msg.createActivityGetMorePointsLinkLabel}" onclick="#{rich:component('convertPointsPanel')}.show()" /> 
       <rich:inputNumberSlider id="participantsSlider" value="#{activityRequestBean.newActivityExpectedNoParticipants}" maxValue="#{activityRequestBean.maxNoParticipants}" /> 
      </h:panelGrid> 
     </h:panelGrid> 
    </a4j:outputPanel> 
</a4j:form> 
<rich:modalPanel rendered="#{sessionBean.loggedIn}" id="convertPointsPanel" width="700" height="400"> 
    <a4j:support event="onhide" reRender="createActivityPanel"></a4j:support> 
    <f:facet name="header"> 
     <h:outputText value="Velg poeng fra kategorier for å konvertere" /> 
    </f:facet> 
    <f:facet name="controls"> 
     <a4j:form><a4j:commandButton id="closeButton" onclick="#{rich:component('convertPointsPanel')}.hide()" type="image" image="/img/close.gif"/></a4j:form> 
    </f:facet> 
    <a4j:form prependId="false" ajaxSubmit="true" id="convertPointsForm"> 
     <h:panelGrid columns ="2"> 
      <h:panelGroup layout="block" style="width:350px; float:left;"> 
       <rich:dataList var="catscore" value="#{pointsRequestBean.scores}" id="activityPointSliderList"> 
        <h:graphicImage height="30" width="30" value="#{catscore.usercategoryscore.category.imagepath}" /> 
        <h:outputText value="#{catscore.usercategoryscore.category.name}" /> 
        <rich:inputNumberSlider maxValue="#{catscore.usercategoryscore.score}" value="#{catscore.transferredScore}" step="2" /> 
       </rich:dataList> 
       <a4j:commandButton value="Konverter" id="convertButton" action="#{pointsRequestBean.convertPoints}" oncomplete="#{rich:component('convertPointsPanel')}.hide()" reRender="createActivityPanel"/> 
      </h:panelGroup> 
      <h:panelGroup layout="block" style="width:350px; float:right; border-left: 1px solid #ACBECE; padding: 10px;"> 
       <h:outputText value="kjøp poeng fra paypal?" /> 
      </h:panelGroup> 
     </h:panelGrid> 
    </a4j:form> 
</rich:modalPanel> 

Notez que j'ai suivi le conseil en redéfinissant le panneau au lieu du formulaire.

Répondre

2

Pourriez-vous poster le code XHTML?

Fondamentalement, l'un de vos problèmes peut être dû au fait que vous remettez un formulaire. Généralement, ce n'est pas une bonne idée. Une solution consiste à inclure un <a4j:outputPanel>, puis de rendre à nouveau ce panneau au lieu du formulaire lui-même.

Ainsi, au lieu d'avoir:

<a4j:commandButton ... reRender="myForm"/> 
<h:form id="myForm"> 
    ... 
</h:form> 

vous pouvez faire:

<a4j:commandButton ... reRender="myFormContent"/> 
<h:form id="myForm"> 
    <a4j:outputPanel id="myFormContent"> 
     ... 
    </a4j:outputPanel> 
</h:form> 

Si cela ne fonctionne pas, s'il vous plaît ajouter plus de code dans votre question.

+0

vous avez résolu mon problème aussi !! Tkz !! – velteyn