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

JSF Java Discussion :

[richfaces] Formulaire imbriqués


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 39
    Par défaut [richfaces] Formulaire imbriqués
    Bonjour ,
    de nouveau avec des soucis
    j'ai un composant 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
     
    <ui:composition>
        <c:if test="#{!empty sessionScope['edit']}">
            <h:form id="#{id}Form">
                <rich:inplaceInput id="#{id}Input" value="#{bundle[key]}"
                                   valueChangeListener="#{i18nBean.update}" onchange="document.getElementById('test:#{id}Form:#{id}Input').component.save();this.form.submit();">
                    <f:attribute name="key" value="#{key}"/>
                    <f:attribute name="bundleName" value="#{bundleName}"/>
                </rich:inplaceInput>
            </h:form>
        </c:if>
        <c:if test="#{empty sessionScope['edit']}">
            <h:outputLabel id="#{id}Label" value="#{bundle[key]}">
                <ui:insert/>
            </h:outputLabel>
        </c:if>
    </ui:composition>
    et lorsque j'ai voulu l'utiliser dans une page de test qui elle meme contient un formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <h:form id="test">
        <h:commandLink value="Editer" actionListener="#{sessionBean.goEditMode}"/>
        <h:commandLink value="Prévisualiser" actionListener="#{sessionBean.quitEditMode}"/>
        <h:commandButton value="submit" actionListener="#{naviEx.submit}"/>
        <h:inputText value="#{naviEx.selectedMovie.title}">
            <i18n:label id="director" key="director" bundle="#{kmji18n}" bundleName="kmji18n"/>
        </h:inputText>
    </h:form>
    </body>
    ça fonctionne pas .
    J'ai cherché sur le net et j'ai trouvé qu'on doit pas utilser un formulaire imbriqué dans un autre (c'est une specification de html/xhtml) je sais pas s'il y aura un moyen de résoudre ce problème alors.

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    En effet, l'imbrication des formulaires est à proscrire !

    Dans ton cas, je ne vois pas trop le lien entre les 2 codes.
    Peux-tu montrer un peu plus en détail ce point ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 39
    Par défaut
    le premier code est celui de composants JSF.
    et dans la page de test j'essaye d'utiliser mon composant dans un formulaire.
    En fait mon composant est un label qui est editable ,je l'utilise dans ce cas de test comme un label d'un champs texte
    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
     
    <h:form id="test">
     <!--ici pour basculer entre les deux modes :un pour editer le label et l'autre pour l'afficher-->
        <h:commandLink value="Editer" actionListener="#{sessionBean.goEditMode}"/>
        <h:commandLink value="Prévisualiser" actionListener="#{sessionBean.quitEditMode}"/>
     
    <!-- boutton pour submitter le  formulaire -->    
    <h:commandButton value="submit" actionListener="#{naviEx.submit}"/>
     
    <!--le champs texte dans le formulaire -->   
     <h:inputText value="#{naviEx.selectedMovie.title}">
     
    <!--utilisation de composant comme label de champs texte -->
            <i18n:label id="director" key="director" bundle="#{kmji18n}" bundleName="kmji18n"/>
        </h:inputText>
    </h:form>
    </body>

  4. #4
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 39
    Par défaut
    Enfin c'est résolu.
    L'idée etait de la part de mon tuteur :On a crée un custom composant form qui selon le mode ou on est ajoute un h:form ou pas alors si on est en mode Edition notre composant sera entouré dans un a4j:panel au lieu d'un h:form vu qu'on a déja un h:form dans le composant label,alors ça va nous permettre d'eliminer l'histoire de formulaires imbriqués.
    Et si on est en mode previsualisation on a utilisé le h:form vu que ça pose pas de problèmes surtout que le composant label dans ce mode prévisualisation n'utilise pas de form.

    Voici le code de nouveau composant form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <ui:composition>
        <c:if test="#{!empty sessionScope['edit']}">
            <h:panelGroup id="#{id}Panel">
                <ui:insert/>
            </h:panelGroup>
        </c:if>
        <c:if test="#{empty sessionScope['edit']}">
            <h:form id="#{id}Form">
                <ui:insert/>
            </h:form>
        </c:if>
    </ui:composition>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XHTML] Formulaires imbriqués interdits ?
    Par Morgoth_fr dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 15/12/2006, 08h40
  2. 2 formulaires imbriqués
    Par harlock59 dans le forum Langage
    Réponses: 9
    Dernier message: 16/06/2006, 13h30
  3. 2 formulaires imbriqués
    Par Invité dans le forum Langage
    Réponses: 16
    Dernier message: 11/05/2006, 08h54
  4. formulaires imbriqués
    Par Nounoursonne dans le forum Langage
    Réponses: 34
    Dernier message: 18/11/2005, 14h18
  5. probleme deux formulaires imbriqués
    Par rony dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/06/2005, 18h19

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