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

Struts 2 Java Discussion :

Récupérer lignes cochées identifiées par des champs multiples


Sujet :

Struts 2 Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 62
    Points : 36
    Points
    36
    Par défaut Récupérer lignes cochées identifiées par des champs multiples
    Bonjour la communauté, je travaille avec le framswork struts 2 j'utilise displaytag pour afficher mes tableaux.

    Sur le résultat de mon tableau je dois cocher des lignes pour les récupérer derrière. Avec comme clé primaire unique je fesais au niveau de la page jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <display:table name="list">
    <display:column title="id"  property="id" ></display:column>
    <display:column title="colonne2" property="colonne2" ></display:column>
    <display:column title="">
    <s:checkbox name="ids" fieldValue="%{#attr.row.id}" />
    </display:column>
    </display:table>
    Au niveau de la classe action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private Long[] ids;
    public String action() {
    for(int i=0;i<checkedIds.length;i++){
    TableEx tableEx = tableS.find(ids[i]);
    //traitement
    }
    et la tout se passe bien mais maintenant j'ai une clé composite (prenons exemple sur les 2 lignes de table)
    je sais pas comment faire.
    Je sais sur jsf on pouvais faire sur la table rich
    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
    <rich:dataTable binding="#{dataTable}" value="#{liste}" var="liste"> 		
    <rich:column>    	
    <h:outputText value="#{liste.id}"/>
    </rich:column>
     
    <rich:column> 
    <h:outputText value="#{liste.colonne2}" />	
    </rich:column>
     
    <rich:column>
    <f:facet name="header"><h:selectBooleanCheckbox /></f:facet>
    <h:selectBooleanCheckbox binding="#{checkbox}"></h:selectBooleanCheckbox>
    </rich:column>
     
    </rich:dataTable>
    et au niveau d la classe action faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private UIData dataTable;
    private UISelectBoolean checkbox;
    public void action(ActionEvent event){
    size = dataTable.getRowCount();
    for (int i = 0; i < size; i++) {
    dataTable.setRowIndex(i);
    if (checkbox.isSelected()) {
    //traitement
    }
    et on on remarquea que la clé soit composite ou non on aura le méme résultat
    sur struts2 est ce qu'on pourrait adopter ce genre de methode et comment faire

    Au niveau du display tag est ce qu'on pourrait mettre un bouton checkbox sur le l'attribut title comme sur l'exemple dans jsf que j'ai défini au dessus sur la facet
    merci

  2. #2
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 62
    Points : 36
    Points
    36
    Par défaut probéme réglé au niveau coche tout mais reste la récupération
    Salut tout le monde
    J'ai eu a régler le probléme du "coche tout"
    j'ai créé un script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script type="text/javascript">
    function checkall(theElement) {	
    var theForm = theElement.form;
    var i = 0;
    for(i=0; i<theForm.length; i++){
    if((theForm[i].type == 'checkbox') && (theForm[i].name != 'selectall')){
    theForm[i].checked = theElement.checked;
    	}
        }
    }
    </script>
    puis au niveau du display tag
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <display:column title="<input type='checkbox' onClick='checkall(this);'/>" />
    j'ai pu utilisé un decorator pour recupérer les lignes cochés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class ClasseDecorator extends TableDecorator { 	    
    public String getChoix()
    {
    TableEx tableEx= (TableEx) getCurrentRowObject();
    String tavleId = tableEx.getId();
    return "<input type='checkbox' name='check' property='choix' value='"+tavleId +"' id='selected" + tavleId + "' />";
    }	    
    }
    au niveau de la page jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <display:table name="list" decorator="ClasseDecorator">
    <display:column title="id"  property="id" ></display:column>
    <display:column title="colonne2" property="colonne2" ></display:column>
    <display:column title="<input type='checkbox' onClick='checkall(this);'/>" property="choix" ></display:column>
    </display:table>
    et enfin au niveau de la classe action faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String[] test;
    test = getRequest().getParameterValues("check");
    Ca marche dans ce cas cad la clé primaire est un champ. maintenant mon probléme est que si on voulais recupérer tous les champs(id et colonne2) cad si nous avons une clé composite (clé primaire est champs multiple)
    merci

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 62
    Points : 36
    Points
    36
    Par défaut
    en faite j'ai pu résoudre le probléme en changeant la methode du tableDecorator

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class ClasseDecorator extends TableDecorator { 	    
    public String getChoix()
    {
    TableEx tableEx= (TableEx) getCurrentRowObject();
    String champsMult = tableEx.getId()+":"+tableEx.getColonne2() ;
     
    return "<input type='checkbox' name='check' property='choix' value='"+champsMult +"' id='selected" + champsMult + "' />";
    }	    
    }
    et au niveau de l'action recupérer séparément les 2 champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String[] table = getRequest().getParameterValues("check");
    TableEx tableEx=null;
    		 for(int i=0;i<table .length;i++){
    String[] sepTable = table[i].split(":");
    tableEx = new TableEx();
    tableEx.setId(Integer.parseInt(sepTable [0]));
    tableEx.setColonne2(sepTable[1]);
    }

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

Discussions similaires

  1. [XL-2003] Récupérer chaines caractères séparées par des espaces
    Par toukii dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/05/2009, 19h55
  2. Réponses: 5
    Dernier message: 10/02/2009, 18h28
  3. Réponses: 0
    Dernier message: 29/01/2009, 22h10
  4. Réponses: 5
    Dernier message: 03/09/2008, 15h19
  5. formulaire avec des champs multiples
    Par don'de dans le forum Struts 1
    Réponses: 13
    Dernier message: 16/02/2007, 10h42

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