2010-11-19 11 views
1

Ich habe ein Problem mit einer <rich:modalPanel> mehr als einmal angezeigt. Ich habe ein Formular, das eine <a4j:commandlink onclick="#{rich:component('mp')}.show()" hat (habe auch eine rich:componentControl versucht).Rich: Modalpanel wird nicht mehr als angezeigt, wenn von Formular

Dieser Ansatz funktioniert gut einmal. Innerhalb des modalen Bereichs habe ich ein neues Formular mit einer Aktion, die an den Absenden-Button angehängt ist (a4j:commandButton). Wenn diese Aktion abgeschlossen ist, wird das modalpanel mit dem gleichen Ansatz wie oben mit oncomplete="#{rich:component('mp')}.hide()" ausgeblendet, und das Formular, das den Befehlslink enthält, wird erneut gerendert.

Jetzt ist das Problem, dass der BefehlsLink zum Anzeigen des Modalpanels nicht mehr funktioniert. Wenn ich eine js in das onclick Ereignis einstelle, kann ich sehen, dass das Ereignis onclick gefeuert wird, aber das modalpanel wird nicht gerendert.

Hope this genügend Informationen ... kann ich einige Quellcode hinzufügen später benötigt, wenn

Dank

edit: hier einige mehr 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> 

Hinweis, dass ich befolgte den Ratschlag beim erneuten Rendern des Panels anstelle des Formulars.

Antwort

2

Könnten Sie den XHTML-Code veröffentlichen?

Grundsätzlich kann eines Ihrer Probleme auf die Tatsache zurückzuführen sein, dass Sie ein Formular erneut vergeben. Im Allgemeinen ist es keine gute Idee. Eine Lösung besteht darin, eine <a4j:outputPanel> einzuschließen und dieses Panel dann erneut zu rendern, anstatt das Formular selbst zu erstellen.

Anstatt also mit:

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

können Sie tun:

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

Wenn dies nicht funktioniert, bitte mehr Code in Ihrer Frage hinzufügen.

+0

hast du mein Problem gelöst !! Tkz !! – velteyn

Verwandte Themen