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 :

Composant composite et les action update de JSF


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Par défaut Composant composite et les action update de JSF
    Bonjour,

    J’ai n'arrive pas à mettez a jour une partie de ma JSF (le panel qui contient des champs texte) en plus je n'ai pas de message qui dit qu'il y un id qui n'est pas reconnu, pas de message je suis dans le flous...

    En plus ce que j'ai remarqué c'est que

    Ma particularités c’est que j'utiliser des composant composite pour réaliser un sorte de bouton qui me ramène un DataTable dans une Dialogue et au choix de la ligne il remplit des champs Texte qui sont dans mon panel, pour ce là j’utilise l'évenement onRowSelectUpdate.

    Je voudrais savoir s'il y a une solution à ce problème ? (j'ai utilisé le @form, sa met à jour met champs texte mais ça me cause un autre problème celui de ressortir plusieurs fois la boit de dialogue une sorte de boucle de update donc j'évite de l'utiliser le @form)

    Aussi je voudrais savoir si j'ai male utiliser tout sais propriété parce que je ne domine pas totalement tout leur impacte (un peu débutant JSF et Primefaces)


    PS: voilà mon code

    Ma page JSF que j'utilise:
    -----------
    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
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <ui:composition
        template="/resources/templates/newTemplatePage.xhtml"
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:p="http://primefaces.prime.com.tr/ui"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:elit="http://java.sun.com/jsf/composite/elit" >
     
        <ui:define name="contenu">   
            <h:form id="formInputM" prependId="false" >  <!-- ! Important ??? -->
     
     
                <elit:inputSelectMultiple _id="selectMultiple_wilaya" label="inputText" icon="ui-icon-person" >
     
                    <p:inputText id="idWilaya" value="#{labCtrl.listSelectWilaya.selectedEnregistrement.id}" /><p:watermark for="idWilaya" value="0" />
                    <p:inputText id="libWilaya" value="#{labCtrl.listSelectWilaya.selectedEnregistrement.libeller}" /><p:watermark for="libWilaya" value="libeller1" />                
     
                </elit:inputSelectMultiple>
     
     
                <elit:tableSelectMultiple _id="selectMultiple_wilaya" label="Select Code Wilaya"
                                 emptyMessage="Actualiser la table ou Modifier votre filtre" showTitleDialog="true" 
                                 handleTableRud="#{labCtrl.listSelectWilaya}" >
     
     
                    <p:column sortBy="#{item.id}" filterBy="#{item.id}" >
                        <f:facet name="header">
                            <h:outputText value="Code Wilaya" />
                        </f:facet>
                        <h:outputText value="#{item.id}" />
                    </p:column>
     
     
                    <p:column sortBy="#{item.libeller}" filterBy="#{item.libeller}" >
                        <f:facet name="header">
                            <h:outputText value="Libellé" />
                        </f:facet>
                        <h:outputText value="#{item.libeller}" />
                    </p:column>                
     
                </elit:tableSelectMultiple>
     
            </h:form>
     
        </ui:define>
    </ui:composition>
    -----------

    --définition de la balise : tableSelectMultiple--
    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
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:composite="http://java.sun.com/jsf/composite"
          xmlns:p="http://primefaces.prime.com.tr/ui" >
     
        <!-- INTERFACE -->
        <composite:interface>
            <composite:attribute name="_id" required="true" ></composite:attribute>      
            <composite:attribute name="label" required="true" ></composite:attribute>
            <composite:attribute name="icon" required="true" ></composite:attribute>       
        </composite:interface>
     
        <!-- IMPLEMENTATION -->
        <composite:implementation >
     
          <p:panel id="#{cc.attrs._id}" >    
     
          <composite:insertChildren id="inputSelectMultiple" ></composite:insertChildren>
     
          <p:commandButton  id="person" oncomplete="InsererFrDialogue.show()" image="#{cc.attrs.icon}" immediate="true" title="#{cc.attrs.label}" update="tableVar" />
          </p:panel>        
     
     
        </composite:implementation>
    </html>
    ----

    --définition de la balise : tableSelect--
    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
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:composite="http://java.sun.com/jsf/composite"
          xmlns:p="http://primefaces.prime.com.tr/ui" >
     
        <!-- INTERFACE -->
        <composite:interface>
            <composite:attribute name="emptyMessage" required="true" ></composite:attribute>
            <composite:attribute name="handleTableRud" required="true" ></composite:attribute>        
            <composite:attribute name="label" required="true" ></composite:attribute>
            <composite:attribute name="_id" required="true" ></composite:attribute>      
            <composite:attribute name="showTitleDialog" required="false" default="false" ></composite:attribute>
     
        </composite:interface>
     
        <!-- IMPLEMENTATION -->
        <composite:implementation >
     
     
          <p:dialog widgetVar="InsererFrDialogue" resizable="false" position="center" modal="true" header="#{cc.attrs.label}" showHeader="#{cc.attrs.showTitleDialog}" minWidth="400" >
            <p:commandButton value="Actualiser la table" action="#{cc.attrs.handleTableRud.doGetAllEnregistrement}" update="tableVar"/>
            <p:dataTable id="tableVar" var="item" value="#{cc.attrs.handleTableRud.listEnregistrement}" widgetVar="LaTable" paginator="true" rows="10" 
                         selectionMode="single" emptyMessage="#{cc.attrs.emptyMessage}"
                         onRowSelectUpdate="#{cc.attrs._id}" onRowSelectComplete="InsererFrDialogue.hide()"
                         rowSelectListener="#{cc.attrs.handleTableRud.onSelectionerEnregistrement}"
                         rowEditListener="#{cc.attrs.handleTableRud.onEditerEnregistrement}" >            
     
                    <composite:insertChildren id="colonneTableRud" />
     
     
            </p:dataTable>
            </p:dialog>
     
        </composite:implementation>
     
    </html>
    ----
    Cordialement
    B.REDOUANE

  2. #2
    Membre éprouvé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Par défaut
    Hi,

    J’ai remarqué que quand j'utilise les Composant composite (il fait une sorte d'include) comme s'il a jouté une autre balise avec un id que je ne connais pas. Ce qui fait que ça me cause des problèmes à la mise à jour (update="...")

    Dit moi s'il est possible de contournés ça ?

    Merci

  3. #3
    Membre éprouvé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Par défaut
    je m'excuse de revenir (sa comment a sérieusement bock)

    petite remarque quand j'utilise le même code directement dans la page .xhtm sa marche très bien

    Ces équivalant a ce que j'ai mit dans le code du premier post :
    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
     
           <h:form id="formInputM" prependId="false" >  <!-- ! Important -->
     
          <p:panel id="selectMultiple_wilaya" >    
     
                    <p:inputText id="idWilaya" value="#{labCtrl.listSelectWilaya.selectedEnregistrement.id}" /><p:watermark for="idWilaya" value="0" />
                    <p:inputText id="libWilaya" value="#{labCtrl.listSelectWilaya.selectedEnregistrement.libeller}" /><p:watermark for="libWilaya" value="libeller1" />                
     
          <p:commandButton  id="person" oncomplete="InsererFrDialogue.show()" image="#{cc.attrs.icon}" immediate="true" title="{cc.attrs.label}" update="tableVar" />
          </p:panel>
     
          <p:dialog widgetVar="InsererFrDialogue" resizable="false" position="center" modal="true" header="{cc.attrs.label}" showHeader="true" minWidth="450" >
            <p:commandButton value="Actualiser la table" action="#{labCtrl.listSelectWilaya.doGetAllEnregistrement}" update="tableVar"/>
            <p:dataTable id="tableVar" var="item" value="#{labCtrl.listSelectWilaya.listEnregistrement}" widgetVar="LaTable" paginator="true" rows="10" 
                         selectionMode="single" emptyMessage="{cc.attrs.emptyMessage}"
                         onRowSelectUpdate="idWilaya,libWilaya" onRowSelectComplete="InsererFrDialogue.hide()"
                         rowSelectListener="#{labCtrl.listSelectWilaya.onSelectionerEnregistrement}"
                         rowEditListener="#{labCtrl.listSelectWilaya.onEditerEnregistrement}" >            
     
                    <p:column sortBy="#{item.id}" filterBy="#{item.id}" >
                        <f:facet name="header">
                            <h:outputText value="Code Wilaya" />
                        </f:facet>
                        <h:outputText value="#{item.id}" />
                    </p:column>
     
     
                    <p:column sortBy="#{item.libeller}" filterBy="#{item.libeller}" >
                        <f:facet name="header">
                            <h:outputText value="Libellé" />
                        </f:facet>
                        <h:outputText value="#{item.libeller}" />
                    </p:column> 
     
     
            </p:dataTable>
            </p:dialog>
    je trouve pas la solution mais a priori ces la gestion des id dans les composant (balise) qui est géré dans le code interpréter dans le navigateur.
    j'ai tentés d'utiliser la propriété prependId="false" mais le problème reste toujours quand je fait des composant composite.

    cordialement
    GeForce

Discussions similaires

  1. JSF Composants composites avec un Converter
    Par geforce dans le forum JSF
    Réponses: 6
    Dernier message: 22/12/2011, 22h37
  2. Réponses: 6
    Dernier message: 06/10/2004, 10h41
  3. [Struts] question bete sur les Action et Form
    Par seb_fou dans le forum Struts 1
    Réponses: 2
    Dernier message: 06/09/2004, 15h24

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