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 1 Java Discussion :

displaytag requestUri ajout d un attribut


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut displaytag requestUri ajout d un attribut
    Bonjour,
    j utiliste un jspTabControl pour la creation des onglets et chaque onglet contient des displaytag

    le soucis que j ai c est que pour garder le méme onglet apres une pagination ou un tri j ai besoin de faire passer un parametre dans la request de type tabPageInputHiddenName_MY_TABCONTROL=ADRESS_TABPAGE
    pour recharger la page sur l action "/myAction.do?tabPageInputHiddenName_MY_TABCONTROL=ADRESS_TABPAGE">

    pour cela j utilise l attribue requestUri du display tag :

    <display:table id="row" name="NAME" requestURI="/myAction.do?tabPageInputHiddenName_MY_TABCONTROL=ADRESS_TABPAGE"" export="true">
    Le probleme que j ai c est qu en triant plusieursfois je trouve l attribut tabPageInputHiddenName_MY_TABCONTROL avec plusieur valeur genre /myAction.do?tabPageInputHiddenName_MY_TABCONTROL=ADRESS_TABPAG_1"?tabPageInputHiddenName_MY_TABCONTROL=ADRESS_TABPAGE_2"
    est ce qu il ya une methode qui permet a displaytag de recharger sur /myAction.do avec une seule valeur de l attribut tabPageInputHiddenName_MY_TABCONTROL

    merci

  2. #2
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour Leopardi,
    les urls genere pour le tri, pagination de displaytag sont des urls de type a href.
    Pour construire cette url, displaytag concatene les infos de tri/pagination avec les autres parametres de l'url (d'ou ton probleme). Donc si par exemple tu as un formulaire avec des champs,, apres un tri/pagination tu perdras tes valeurs. JSPTabcontrol lui genere des champs caches input type hidden pour garder l'etat des onglets selectionnes.

    Pour regler ce probleme, en ce qui me concerne je poste le formulaire, autrement dit les urls generes de displaytag font appel a une fonction javascript qui prends l'url et poste le formulaire.

    Pour cela il faut modifier le fichier de conf de displaytag pour gerer la factory qui genere les urls. Je ne m'en rappelle plus exactement comment il faut faire, mais je l'ai fait dans le projet Gestcv ou j'utilise d'ailleurs JSPTabControl.

    Angelo

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    bonjour

    oui mais comment implementer son propre requestHelper??

    sinon j ai pensé a faire un filtre (javax.servlet.Filter) pour enlever ou modifier la valeur du parametre apres chaque action comme il n existe pas une methode pour la suppression des parametre d un request !!!

  4. #4
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Tu as tout as fait compris,
    tu doit implementer requestHelper. Autant pour moi
    je ne l'ai pas integrer dans gestcv c'etait dans un autre projet que j''avait fait.
    Je te retrouve ce que j'avais fait et je te le mettrai dans le ce psot.

    Pardon pour mon info errone.

    Angelo

  5. #5
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Leopardi,
    j'ai retrouve ce que j'avait fait.
    Mais avant tout j'ai juste juste une question, JSPTabControl te convient il? Si y a des choses dont tu aurrais besoin (et que ca soit facile a mettre en place), j'essayeraide le faire evoluer.

    Voici mes explications :

    1. recuperer displatag.properties de la distribution de displaytag et le mettre dans ton rep src de ton projet.

    2. renseigner l apropriete factory.requestHelper par ta classe requestHelper
    factory.requestHelper=net.sourceforge.commons.displaytag.JavascriptRequestHelperFactory

    3. implementer org.displaytag.util.RequestHelperFactory
    Voici les 3 classes que j'ai developpe :

    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
    package net.sourceforge.commons.displaytag;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.jsp.PageContext;
     
    import org.displaytag.util.RequestHelper;
    import org.displaytag.util.RequestHelperFactory;
     
    public class JavascriptRequestHelperFactory  implements RequestHelperFactory
    {
     
            public JavascriptRequestHelperFactory()
            {
     
            }
     
            public RequestHelper getRequestHelperInstance(PageContext pageContext)
            {
                return new JavascriptRequestHelper((HttpServletRequest)pageContext.getRequest(), (HttpServletResponse)pageContext.getResponse());
            }
    }
    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
    package net.sourceforge.commons.displaytag;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.displaytag.util.DefaultRequestHelper;
    import org.displaytag.util.Href;
     
    public class JavascriptRequestHelper extends DefaultRequestHelper {
     
    	  private HttpServletRequest request;
    	    private HttpServletResponse response;
     
    	public JavascriptRequestHelper(HttpServletRequest servletRequest, HttpServletResponse servletResponse) {
    		super(servletRequest, servletResponse);
    		request = servletRequest;
            response = servletResponse;
    	}
     
    	 public Href getHref()
    	 {
     
    		 String requestURI = request.getRequestURI();
    		 /**
                      * Search sort request parameter (if exclude="*" )
                      */
    		 String searchId = request.getParameter("searchid");
    		 String	sortCriterion = null;
    		 String	sortDirection = null;
    		 if (searchId != null) {
    			 // Sort criterion
    			 sortCriterion = (String)request.getParameter(searchId + "_sort");
    			// Sort direction
    			sortDirection = (String)request.getParameter(searchId + "_dir");			
    		 }
     
            Href href = new JavascriptDefaultHref(requestURI, searchId, sortCriterion, sortDirection);
            href.setParameterMap(getParameterMap());
            return href;
    	 }	
    }
    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
     
    package net.sourceforge.commons.displaytag;
     
    import org.displaytag.util.DefaultHref;
     
    public class JavascriptDefaultHref extends DefaultHref {
     
    	private String searchId;
    	private String sortCriterion;
    	private  String sortDirection;
     
    	public JavascriptDefaultHref(String baseUrl, String searchId, String sortCriterion, String sortDirection)
    	{
    		super(baseUrl);
    		this.searchId = searchId;
    		this.sortCriterion = sortCriterion;
    		this.sortDirection = sortDirection;		
    	}
     
    	public String toString() {
     
    		if (searchId != null) {			
    			String sortCriterionParam = searchId + "_sort";
    			if (getParameterMap().get(sortCriterionParam) == null) {			
    				String sortDirectionParam = searchId + "_dir";
    				addParameter(sortCriterionParam, sortCriterion);
    				addParameter(sortDirectionParam, sortDirection);
    			}
    		}		
    		String url = super.toString();		
     
     
    		return "javascript:sortOrPaginate('" + url + "');";
    	}
     
     
    }
    Ceci te genenrera l ameme url que displaytage mais
    en etant encapsule avec la fonction js sortOrPaginate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javascript:sortOrPaginate(...');
    Et voici le fichier js qui contient sortOrPaginate :

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    /**
     * Fonction posterForm : declenche un submit sur le formulaire
     * de nom <nomFormulaire> en mettant a jour le champ input cache
     * dispatch avec la valeur <valeurDispatch>. Si le parametre
     * <target> est renseigne, le resultat du submit s'ouvrira
     * dans la target indique (autre page...).
     * @param nomFormulaire nom du formulaire.
     * @param valeurDispatch valeur du dispatch.
     * @param target target de la page.
     */
    function posterForm(dispatchValue, target) {   // get the form object
      posterActionForm(null, dispatchValue, target);
    }
     
    function posterActionForm(action, dispatchValue, target) { 
     
    	var formObject = document.forms[0];
     
       // test if form exists
       if (formObject != null) {
     
          // get the HTML input named "dispatch"
          var dispatchName = "dispatch";
          var dispatchObject = formObject.elements[dispatchName];
    //alert(dispatchValue + ", dispatchObject="  + dispatchObject);	
     
          if (dispatchObject == null) {
             //the input named dispatch does not exist
             alert("Impossible to post data from the HTML form. The HTML input named <" + dispatchName + "> does not exist.");
          }
          else {
             if (action != null)
               	formObject.action = action;
             // update dispatch value
             dispatchObject.value = dispatchValue;
             if (target != null) {
                var targetTmp = formObject.target;
                formObject.target=target;
                // Declenchement du submit
                formObject.submit();
                // On remet la target initiale
                formObject.target=targetTmp;
             }
             else
                formObject.submit();
          }
       }
       else {
          // Le formulaire n'existe pas.
          alert("Impossible to post data from the HTML form. The form named <" + formName + "> does not exist.");
       }
    }
     
    function setDispatch(dispatchValue) {
    	var dispatchName = "dispatch";
        var dispatchObject = document.forms[0].elements[dispatchName];
        if (dispatchObject != null) {
        	dispatchObject.value = dispatchValue;
        }
    }
     
    function sortOrPaginate(url) {
    	var formObject = document.forms[0];
       // test if form exists
       if (formObject != null) {
       	posterActionForm(url);	
       }
       else {
       	window.location = url;
       }
    }
    J'espere que ca pourra t'aider.

    Angelo

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    bonjour azerr

    pour le moment je trouve ts ce dont j ai besoin dans le JspTab.

    merci pour le code je vais voir comment l adapter et je vous tiendrais au courant

    merci

  7. #7
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Par défaut
    Essayes en ajoutant le paramétre 'excludedParams' => http://displaytag.sourceforge.net/11...nce.html#table
    Cette option permet de supprimer les parametres dans l'url

  8. #8
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour ericw78,
    il ne faut exclure le paramtre (tabPageInputHiddenName_MY_TABCONTROL qui contient le nom de l'onglet selectionne) car sinon apres un tri/pagination, on perda l'onglet courant selectionne.

    Angelo

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    Salut les gas
    vloila je croi ke j ai reussi a resoudre le probleme
    classe DisplaytagDefaultHref
    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
     
    public class DisplaytagDefaultHref extends DefaultHref{
     
        private String searchId;
        private String displayCriterion;
     
     
     
        public DisplaytagDefaultHref(String baseUrl, String searchId,DisplaytagRequestHelper displayRequestHelper)
        {
                super(baseUrl);
                this.searchId = searchId;
                setParameterMap(displayRequestHelper.getParameterMap()); 
                if (searchId != null) {                 
                    removeParameter("tabPageInputHiddenName_NOM_JSPTAB");    
                }  
     
        }
     
     
    }
    classe DisplaytagRequestHelper
    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
    public class DisplaytagRequestHelper extends DefaultRequestHelper{
     
        private HttpServletRequest request;
        private HttpServletResponse response;
     
        DisplaytagRequestHelper(HttpServletRequest servletRequest, HttpServletResponse servletResponse) {
            super(servletRequest, servletResponse);
            request = servletRequest;
            response = servletResponse;
     
        }
     
         public Href getHref()
        {
     
                    String requestURI = request.getRequestURI();
                    String searchId = request.getParameter("tabPageInputHiddenName__NOM_JSPTAB");
     
                    Href href = new DisplaytagDefaultHref(requestURI, searchId,this);
     
     
                    return href;
        }      
        }
    classe DisplaytagRequestHelperFactory

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class DisplaytagRequestHelperFactory implements RequestHelperFactory{
     
     
                    public DisplaytagRequestHelperFactory(){
     
                    }
                    public RequestHelper getRequestHelperInstance(PageContext pageContext)
                    {
                        return new DisplaytagRequestHelper((HttpServletRequest)pageContext.getRequest(), (HttpServletResponse)pageContext.getResponse());
                    }
    }

    merci

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

Discussions similaires

  1. Ajout d'un attribut sur un noeud xml
    Par jbrasselet dans le forum VBScript
    Réponses: 2
    Dernier message: 02/07/2007, 16h51
  2. [javascript]ajout d'un attribut dans div
    Par ranell dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/04/2007, 20h51
  3. Réponses: 3
    Dernier message: 01/03/2007, 17h08
  4. [XSD] Ajout d'un attribut +d'une restriction
    Par be_tnt dans le forum Valider
    Réponses: 3
    Dernier message: 23/01/2007, 12h45
  5. Réponses: 4
    Dernier message: 11/02/2005, 14h20

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