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 :

[html:image] Comportement différent entre IE et FireFox [FAQ]


Sujet :

Struts 1 Java

  1. #1
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 170
    Points : 174
    Points
    174
    Par défaut [html:image] Comportement différent entre IE et FireFox
    Bonjour,

    Voici mon soucis : j'utilise le tag <html:image> dans une jsp, et son comportement differe suivant le navigateur (IE et FireFox).
    Voici le contenu de la balise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:image page="/images/divers/fleche_haut.gif" property="type_action" value="monter"></html:image>
    Le probleme concerne type_action. Avec Firefox, je retrouve dans la requete les parametres suivants : type_action="monter", type_action.x=... et type_action.y=... Avec IE je n'ai que les 2 derniers et je n'ai donc pas la valeur de type_action qui m'interesse.
    D'après la doc de struts il n'est pas clairement préciser si type_action=... doit apparaitre ou non dans la requete.
    Quelqu'un peut-il me dire quel comportement est celui attendu (FireFox ou IE), et s'il y a une solution avec ce tag pour retrouver avec IE le meme comportement qu'avec FireFox ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 106
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Je me permets de faire un up de cette discussion. En effet, j'ai exactement le même problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:image src="<%= supPicto %>" value="<%= id %>" property="<%= actionSup %>" titleKey="parametrage.exportParamSelTab.brwTableauxCol3.title" alt="" onclick="if (!confirm('Voulez-vous supprimer cet enregistrement ?')) return false;"/>
    Cette portion de code génère exactement le même code source html sous Firefox et sous IE.

    Mais sous Firefox, je récupère en paramètre <%=actionSup%> mais pas sous IE ...

    Merci

  3. #3
    Membre actif
    Profil pro
    Developpeur
    Inscrit en
    Avril 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Avril 2004
    Messages : 160
    Points : 212
    Points
    212
    Par défaut
    Je pense que sous IE <html:image ...> fait pas un submit ou l'inverse je me rappel plus, utilise <html:img....> et voir si ça va marcher sous IE ( je pense que ca va marcher).

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 106
    Points : 76
    Points
    76
    Par défaut
    Merci de ta réponse.

    Le <html:image> est bien celui qui submit.

    C'est quand même curieux que ça fonctionne sous Firefox et pas sous IE.

  5. #5
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Je ne sais pas pourquoi le comportement est différent sous FireFox et sous IE mais tu trouveras dans cette discussion une explication concernant le fonctionnement du tag html:image.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 106
    Points : 76
    Points
    76
    Par défaut
    J'ai essayé avec les ImageButtonBean.
    Pour essayer de remettre ce bout de code dans le contexte de mon application, j'ai un tableau contenant des lignes représentant une entité (code, colonne, un bouton supprimer qui a une forme d'image).

    Comment je peux récupérer par ces ImageButtonBean le bouton sur lequel j'ai cliqué (ou le code de l'entité gestionnaire), étant donné que je ne peux savoir combien je vais avoir d'élements dans cette liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <logic:iterate id="ligne" name="exportParamSelFinForm" property="listeEntites" indexId="indiceLigne">
    		<bean:define id="id"><bean:write name="ligne" property="id" />	</bean:define>
    		<bean:define id="actionSup"><bean:write name="ligne" property="actionSup" /></bean:define>
    		<tr class="row">
    				<td align="center" valign="middle"><bean:write name="ligne" property="code"/></td>
    				<td align="left" valign="middle"><bean:write name="ligne" property="lib"/></td>
    				<td align="center" valign="middle">
    					<html:image src="<%= supPicto %>" value="<%= id %>" property="<%= actionSup %>" titleKey="parametrage.exportParamSelFin.brwProduitFinCol3.title" alt="" onclick="if (!confirm('Voulez-vous supprimer cet enregistrement ?')) return false;"/>
    				</td>
    			</tr>
    		</logic:iterate>

  7. #7
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Dans ton cas, il serait peut-être mieux d'utiliser un tag html:img dans un tag html:link comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:link action="pathDeTonAction" paramId="id" paramName="ligne" paramProperty="id">
       <html:img src="<%= supPicto %>" onclick="if (!confirm('Voulez-vous supprimer cet enregistrement ?')) return false;"/>
    </html:link>
    Ainsi, tu n'as plus besoin des ImageButtonBean, il n'est plus utile de faire un bean:define pour l'id et tu peux récupérer l'id dans l'Action exécutée via un request.getParameter("id").

    Dis-moi si ça correspond bien à ton besoin.

    Sinon, pour info, si tu es en J2EE 1.4 ou plus, tu peux remplacer la scriptlet <%=supPicto%> par une EL comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:img src="${supPicto}" onclick="if (!confirm('Voulez-vous supprimer cet enregistrement ?')) return false;"/>
    ou tu pourrais même définir dans ton fichier des messages une clé qui a pour valeur l'url de l'image comme ceci par exemple :
    supPicto=images/imageSup.gif
    et dans le tag html:img, remplacer l'attribut src par srcKey :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:img srcKey="supPicto" onclick="if (!confirm('Voulez-vous supprimer cet enregistrement ?')) return false;"/>

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 106
    Points : 76
    Points
    76
    Par défaut
    Je te remercie pour tous tes conseils.

    J'ai aussi pensé au link associé avec l'image mais j'ai vraiment besoin de submitter le formulaire pour conserver les valeurs des checkboxs placés en amont dans le formulaire.

    J'ai vu cette documentation
    http://struts.apache.org/1.x/userGui...ontroller.html

    au paragraphe 4.10, il nous précise qu'on peut utiliser des wildcard. Etant donné qu'avec IE je ne récupère pas la valeur de mon identifiant, est-il possible de concatener le forward et l'identifiant.

    Et ds mon struts config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <forward name="supprimer*" path="/exportParam.supprimerTableau.do" redirect="false" />
    Et puis ds l'action, je me débrouille pour découper ma chaine et récupérer mon id.
    En tout cas ça me semble bien compliqué ... déjà à expliquer

  9. #9
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Alors, finalement, tu peux sans doute t'en sortir avec le tag html:image en ajoutant l'attribut indexed="true" :
    indexed - Valid only inside of logic:iterate tag. If true then name of the html tag will be rendered as "propertyName[34]". Number in brackets will be generated for every iteration and taken from ancestor logic:iterate tag.
    Il va donc falloir coder getter et setter indexés correspondant dans l'ActionForm.

    A tester.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 106
    Points : 76
    Points
    76
    Par défaut
    J'ai essayé cette solution.
    Je ne sais pas si j'utilise mal la propriété indexed mais je ne récupère toujours pas l'id avec IE ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:image indexed="true" src="<%= supPicto %>" value="<%= id %>" property="imageIndexed" titleKey="parametrage.exportParamSelTab.brwTableauxCol3.title" alt="" onclick="document.getElementById('exportParamSelTabForm').action='/galion/parametrage/exportParam.supprimerTableau.do'"/>
    Mes accesseurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /**
             * @param imageIndexed The imageIndexed to set.
             */
    	public void setImageIndexed(int index, String value) {
    		this.imageIndexed[index] = value;
    	}
     
     
    	public String getImageIndexed(int index) {
        	return imageIndexed[index];
       }
    Avec firefox tout va bien, je récupère l'identifiant dans le tableau à la position ou il se trouve ds ma liste. Avec IE, désesperemment rien ....

    Il est fort probable que j'utilise mal la propriété indexed.

  11. #11
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Il faudrait plutôt définir dans ton ActionForm un tableau de ImageButtonBean :
    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
    	private ImageButtonBean[] imageButtons ;
     
    	public ImageButtonBean[] getImageButtons()
    	{
    		return imageButtons;
    	}
    	public void setImageButtons(ImageButtonBean[] imageButtons)
    	{
    		this.imageButtons = imageButtons;
    	}
    	public ImageButtonBean getImageButton(int i)
    	{
    		return this.imageButtons[i] ;
    	}
    	public void setImageButton(int i,ImageButtonBean imageButtonBean)
    	{
    		this.imageButtons[i]=imageButtonBean ;
    	}
    et dans l'Action, pour savoir lequel a été sélecté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ImageButtonBean[] imageButtons = exportParamSelFinForm.getImageButtons() ;
    for (int i=0; i<imageButtons.length; i++)
    {
    	ImageButtonBean imageButton = imageButtons[i] ;
    	System.out.println("imageButton["+i+"]="+imageButton.isSelected()) ;
    }
    Il affichera true pour celui qui a été sélecté.

    Pour que ça fonctionne, il faut penser à initialiser le tableau d'ImageButtonBean.
    Je te conseille de le faire dans l'Action qui initialise le formulaire en tenant compte de la taille de ta liste listeEntites comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ImageButtonBean[] imageButtons = new ImageButtonBean[listeEntites.size()];
    for ( int i=0; i<listeEntites.size(); i++)
    {
    	imageButtons[i]=new ImageButtonBean() ;
    }
    exportParamSelFinForm.setImageButtons(imageButtons) ;
    et dans ce cas, il n'est pas utile de mettre l'attribut value dans le tag html:image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:image src="<%= supPicto %>" property="imageButton" indexed="true" titleKey="parametrage.exportParamSelTab.brwTableauxCol3.title" alt="" onclick="document.getElementById('exportParamSelTabForm').action='/galion/parametrage/exportParam.supprimerTableau.do'"/>

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 106
    Points : 76
    Points
    76
    Par défaut
    Merci beaucoup de ton aide.

    C'est résolu grâce à ta solution.

    PS : J'aurais aimé mettre le thread en [Résolu] mais je n'ai pas crée la discussion.

  13. #13
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    De rien.

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

Discussions similaires

  1. comportement différent entre firefox et IE8
    Par khaic dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 06/05/2011, 16h30
  2. Comportement couleur bordure tableau différent entre IE et Firefox
    Par Borowsky dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 28/08/2009, 01h24
  3. Réponses: 2
    Dernier message: 02/02/2009, 10h03
  4. GetElementsByName.length différent entre IE et FireFox
    Par seb34 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 14/06/2006, 17h13
  5. Comportement différent entre un bouton et une image
    Par MicheMTP13 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 07/11/2005, 08h47

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