Bonjour,

Je fais ma premiere appli en JSF et je tombe sur un petit problème.
Je souhaite inserer dans une liste déroulante une nouvelle entrée provenant d'un formulaire situé dans un modalPanel.
Le formulaire du modalPanel fonctionne bien et ma donnée est bien insérer dans la base de donnée.
Le soucis se situe au niveau du modalPanel, des messages d'erreurs eventuels du formulaire et le rafraichissement de la liste (sans que ce soit la page qui se rafraichisse).

Si je mets comme regle de navigation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
	 <navigation-rule>
		<from-view-id>/gestionrao.jsp</from-view-id>
		<navigation-case>
		<from-outcome>saveNewConcurrent</from-outcome>
		<to-view-id>/gestionrao.jsp</to-view-id>
		<redirect/>
		</navigation-case>
	</navigation-rule>
Le modalPanel affiche bien les message d'erreurs s'il y en a et se ferme bien s'il n'y en a pas. La bdd est bien remplie mais toute ma page se rafraichit et non pas uniquement la liste déroulante.

Si je ne mets pas de regle de navigation, ma liste est bien rafraichit (sans que ce soit la page) et je vois les messages d'erreurs s'il y en a mais mon modalPanel reste toujours ouvert.

Si je rajoute dans ma commande du bouton du formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
oncomplete="Richfaces.hideModalPanel('addConcurrent');"
Le modalPanel se ferme tout le temps, meme si j'ai des messages d'erreurs. Ce qui ne me convient pas.

Ma question est : existe il une solution pour qu'il n'y ait que ma liste de mis a jour avec un modalPanel qui reste ouvert s'il y a des messages d'erreurs et qui se ferme si tout ce passe bien ?

Voici le code de mon modalPanel au complet

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
		<c:subview id="nouveauConcurrent">
		    <rich:modalPanel id="addConcurrent" headerClass="headerPanel" styleClass="simplePanel" style="border-color:#ba3d3d;" autosized="true" rendered="">
		        <c:facet name="header">
		            <h:panelGroup>
		                <h:outputText value="Ajouter un concurrent"></h:outputText>
		            </h:panelGroup>
		        </c:facet>
		        <c:facet name="controls">
		            <h:panelGroup>
		                <h:graphicImage value="/media/images/fermer.png" style="cursor:pointer" id="hidePanelConcurrent" width="14"/>
		                <rich:componentControl for="addConcurrent" attachTo="hidePanelConcurrent" operation="hide" event="onclick"/>
		            </h:panelGroup>
		        </c:facet>
			    <h:form id="newConcurrentForm">
			        <t:panelGrid columns="3" id="panelAddConcurrent">
				        <h:outputText value="Nom Court:" styleClass="labelChamp"/>
				        <t:inputText id="nomCourtAddConcurrent" value="#{saveNewConcurrentFromGestionrao.nomCourt}" required="true">
				        	<c:validator validatorId="concurrentValid" />
				        </t:inputText>
				        <t:panelGroup>
					        <a4j:outputPanel ajaxRendered="true">
					        	<h:message id="concurrentNomCourtError" for="nomCourtAddConcurrent"/>
					        </a4j:outputPanel>
				        </t:panelGroup>
				        <h:outputText value="Nom Long:" styleClass="labelChamp"/>
				        <t:inputText  id="nomLongAddConcurrent" value="#{saveNewConcurrentFromGestionrao.nomLong}" required="true">
				        	<c:validator validatorId="concurrentValid" />			        
				        </t:inputText>
						<t:panelGroup>
					        <a4j:outputPanel ajaxRendered="true">
						        <h:message id="concurrentNomLongError" for="nomLongAddConcurrent" />
						    </a4j:outputPanel>
						</t:panelGroup> 
				        <h:outputText/>
				        <a4j:commandButton id="buttonAddConcurrent" action="#{saveNewConcurrentFromGestionrao.saveNewConcurrentFromGestionrao}"  value="Ajouter" styleClass="elmtAlignCentre" reRender="addConcu"/>
				        <h:outputText/>
			        </t:panelGrid>
			    </h:form>
		    </rich:modalPanel>
	</c:subview>
et voici le code de la liste à mettre à jour

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<a4j:outputPanel id="addConcu" >
   <rich:pickList id="concurrent" value="#{gestionRaoBean.concurrent}" listsHeight="92" showButtonsLabel="false" disabledStyleClass="boutonPickListDisabled" enabledStyleClass="boutonPickList" sourceListWidth="100" targetListWidth="100" >
       <c:selectItems value="#{gestionRaoBean.concurrentChoice}" />
   </rich:pickList>
</a4j:outputPanel>