IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java EE Discussion :

Problème pour réinitialiser les inputs d'un formulaire


Sujet :

Java EE

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Problème pour réinitialiser les inputs d'un formulaire
    Salut

    Je suis en train de travailler sur une application à partir de Jboss Seam et j'ai créé des formulaires dynamiques dans des modals panels pour ne pas à avoir à recharger la page complète à chaque action.

    Lorsque je fais un "enregistrer" soit un persist de mon objet, à la seconde ouverture de mon modal panel mon formulaire est bien vide, mais si je fais un "annuler" en ayant renseigné certains champs ces derniers ne sont pas réinitialisé à la seconde ouverture.

    Ceci malgré l'appel de la fonction clearInstance(). J'ai aussi essayé de forcer de réinitialiser les inputs en parcourant les inputs du formulaire mais la fonction bloque .

    Une idée ?

    Le bean:
    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
    42
    43
    44
    45
    46
    47
    48
     
    @Name("myEntityHome")
    public class MyEntityHome extends EntityHome<MyEntity> {
     
    	@In(create = true)
    	MySubEntityHome mySubEntityHome;
     
    ...
     
    	public MySubEntityHome getMySubEntityHome (){
    		return mySubEntityHome ;
    	}
     
            public String clearInstanceMySubEntityHome(){
     
    		mySubEntityHome.clearInstance();
    		clearSubmittedValues("form");
    		return "cleared";
    	}
     
     
    	public void clearSubmittedValues(String formName) {
     
    		UIViewRoot view = getFacesContext().getViewRoot();
    		UIComponent uiComponent = view.findComponent(formName);
    		clearSubmittedValues(uiComponent);
    	}
     
    	public void clearSubmittedValues(UIComponent uiComponent) {
     
    	        if (uiComponent == null) {
    	            return;
    	        }
     
    	        Iterator<UIComponent> children = (uiComponent).getFacetsAndChildren();
     
    	        while (children.hasNext()) {
    	            clearSubmittedValues(children.next());
    	        }
    	        if (uiComponent instanceof UIInput) {
    	            ((UIInput) uiComponent).setSubmittedValue(null);
    	            ((UIInput) uiComponent).setValue(null);
    	            ((UIInput) uiComponent).setLocalValueSet(false);
    	            ((UIInput) uiComponent).resetValue();
    	        }        
    	}
     
    }

    la jsf:
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
     
    			<a4j:commandLink styleClass="popup"
                    		value="Ajouter" 
            			ajaxSingle="true"
            			action="#{MyEntityHome.clearInstanceMySubEntityHome}"
            							onclick="Richfaces.showModalPanel('modalPanel')">
            			<a4j:support event="oncomplete" ajaxSingle="true" reRender="formRefrech"/> 
        			</a4j:commandLink>
     
    ...
     
    <rich:modalPanel  id="modalPanel" autosized="true" >
     
    	<a4j:outputPanel id="formRefresh">
        <h:form id="form" styleClass="edit" >
     
                <s:decorate id="myNameField" template="layout/edit.xhtml">
                    <ui:define name="label">Name</ui:define>
                    <h:inputText id="myName"
                           required="true"
                               size="45"
                              value="#{myEntityHome.mySubEntityHome.instance.myName}">
                        <a:support event="onblur" reRender="myNameField" bypassUpdates="true" ajaxSingle="true"/>
                    </h:inputText>
                </s:decorate>
     
                <div style="clear:both">
                    <span class="required">*</span>
                    Champs requis
                </div>
     
            <div class="actionButtons">    
     
    			<a4j:commandButton
    				value="Enregistrer"
        				action="#{myEntityHome.mySubEntityHome.persist}"
    				onclick="Richfaces.hideModalPanel('modalPanel')"> 
    			</a4j:commandButton>
     
    			<a4j:commandButton
    				value="Annuler"
        				action="#{myEntityHome.mySubEntityHome.clearInstance}"
        				<!-- ou cette action pour forcer le clean des inputs
        				action="#{myEntityHome.clearInstanceMySubEntityHome}"
        				-->
        				immediate="true"
    				onclick="Richfaces.hideModalPanel('modalPanel')">  
    			</a4j:commandButton>
     
     
            </div>
        </h:form>
        </a4j:outputPanel>	
    	</rich:modalPanel>

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Essayes de tracer ton Bean, avant et après avoir "clearer" ton instance ...

    A mon avis, ton Bean (ton instance) est bien réinitialisée, mais cela ne paraît pas sur la fenêtre modale, car elle n'a pas été rafraichit (reRender) ... sur l'action annuler

Discussions similaires

  1. Problème pour remplir les inputs d'un .bat
    Par littlel dans le forum Général Python
    Réponses: 4
    Dernier message: 26/07/2012, 11h31
  2. [AC-2000] Probléme pour enregistrer les modification d'un formulaire
    Par Flow56 dans le forum IHM
    Réponses: 1
    Dernier message: 07/09/2010, 08h17
  3. problème pour récupérer les variables GEt d'un formulaire
    Par ouldfella dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/01/2010, 10h22
  4. [MySQL] Problème pour récupèrer les champs d'un formulaire qui se trouve dans un while
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 21/03/2008, 14h59
  5. Réponses: 5
    Dernier message: 01/06/2007, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo