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 :

[Struts-Layout] Indexer un champ <layout:date>


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Par défaut [Struts-Layout] Indexer un champ <layout:date>
    Bonjour,

    J'ai une iteration à faire sur une liste d'objet et pour chaque objet je doit créer un champ layout:date.

    Mon besoin et donc d'indexer ces champs afin de les différencier.

    Voici le code de ma JSP dans un cas classique (non indexé) où il n'y a pas d'itération :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <table><layout:date name="creerControleInitialOrganismeForm" property="dateDE1" layoutId="dateDE1" startYear="<%=com.maSociete.util.MonProjetUtil.getStartYear()%>" endYear="<%=com.maSociete.util.MonProjetUtil.getEndYear()%>" calendarTooltip="S&eacute;lectionnez la date" key="" patternKey="dd/MM/yyyy" onchange="verifierDateSaisie(this);setModification();" size="10" maxlength="10" mode="E,E,E" /></table>
    Et voici le genre de chose que j'aimerais faire (voir layoutId) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <table>
    	<logic:iterate id="ecart" name="mesure" property="colsEcarts" indexId="indexEc" type="com.maSociete.monProjet.metier.objetTransfert.arborescence.EcartOT">
    		<tr>
    			<td>
    				<table><layout:date name="ecart" property="dateDE2" layoutId="dateDE2_<bean:write name="ecart" property="id"/>" startYear="<%=com.maSociete.util.MonProjetUtil.getStartYear()%>" endYear="<%=com.maSociete.util.MonProjetUtil.getEndYear()%>" calendarTooltip="S&eacute;lectionnez la date" key="" patternKey="dd/MM/yyyy" onchange="verifierDateSaisie(this);setModification();" size="10" maxlength="10" mode="E,E,E" /></table>
    			</td>
    		</tr>
    	</logic:iterate>
    </table>
    Mais à priori on ne peux pas imbriquer 2 balises Struts.
    Si je fait cette imbrication voici le message d'erreur généré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /affaire/tableau/tableauSuiviEcartCI.jsp(1181,303) Symbole égal (equal) attendu
    Peut-on effecuer ce genre d'imbrication ? (pour info la version de Struts est 1.1)
    Si non, y-a-t-il une solution de contournement ?

  2. #2
    Expert confirmé

    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
    Par défaut
    C'est un problème de quotes ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    layoutId="dateDE2_<bean:write name="ecart" property="id"/>"
    mais je ne suis pas certaine que cela puisse fonctionner même avec des simples quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    layoutId="dateDE2_<bean:write name='ecart' property='id'/>"
    Par contre, tu peux utiliser une EL pour indexer comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <logic:iterate id="ecart" name="mesure" property="colsEcarts" indexId="indexEc" type="com.maSociete.monProjet.metier.objetTransfert.arborescence.EcartOT">
    <tr>
    	<td>
    		<table><layout:date property="colsEcarts[${indexEc}].dateDE2" startYear="<%=com.maSociete.util.MonProjetUtil.getStartYear()%>" endYear="<%=com.maSociete.util.MonProjetUtil.getEndYear()%>" calendarTooltip="S&eacute;lectionnez la date" key="" patternKey="dd/MM/yyyy" onchange="verifierDateSaisie(this);setModification();" size="10" maxlength="10" mode="E,E,E" /></table>
    	</td>
    </tr>
    </logic:iterate>
    ou si ça ne fonctionne pas avec une EL, la remplacer par une scriptlet.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Par défaut
    En utilisant la solution suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    layoutId="dateDE2_<bean:write name='ecart' property='id'/>"
    Voici le code HTML généré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <table><tr><th valign="top" class="null" id="dateDE3_<bean:write name='ecart' property='id'/>L"><span class="null"></span></th><td valign="top" class="null" id="dateDE3_<bean:write name='ecart' property='id'/>F" style=""><input type="text" name="dateDE3" maxlength="10" size="10" value="" onchange="verifierDateSaisie(this);setModification();"><a href="javascript://" onclick="showCalendar(2008,12,18,'dd/MM/yyyy','tableauSyntheseCIForm','dateDE3',event,1998,2018);"><img alt="S&eacute;lectionnez la date" border="0" src="/MONPROJET/inc/images/treeviewImg/calendar.gif"></a><img name="dateDE3required" src="/MONPROJET/inc/images/treeviewImg/clearpixel.gif"></td></tr></table>
    Je n'ai plus d'erreur de compilation, mais <bean:write name='ecart' property='id'/> n'est pas remplacé par sa valeur.

    Même problème avec la deuxième solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <table><layout:date name="ecart" property="dateDE3" layoutId="colsEcarts[${indexEc}].id" startYear="<%=com.maSociete.util.MonProjetUtil.getStartYear()%>" endYear="<%=com.maSociete.util.MonProjetUtil.getEndYear()%>" calendarTooltip="S&eacute;lectionnez la date" key="" patternKey="dd/MM/yyyy" onchange="verifierDateSaisie(this);setModification();" size="10" maxlength="10" mode="E,E,E" /></table>

    Voici le code HTML générer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <table><tr><th valign="top" class="null" id="colsEcarts[${indexEc}].idL"><span class="null"></span></th><td valign="top" class="null" id="colsEcarts[${indexEc}].idF" style=""><input type="text" name="dateDE3" maxlength="10" size="10" value="" onchange="verifierDateSaisie(this);setModification();"><a href="javascript://" onclick="showCalendar(2008,12,18,'dd/MM/yyyy','tableauSyntheseCIForm','dateDE3',event,1998,2018);"><img alt="S&eacute;lectionnez la date" border="0" src="/MONPROJET/inc/images/treeviewImg/calendar.gif"></a><img name="dateDE3required" src="/MONPROJET/inc/images/treeviewImg/clearpixel.gif"></td></tr></table>
    Avec la dernière solution ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <table><layout:date name="ecart" property="dateDE3" layoutId="<%="dateDE3_" + Long.toString(ecart.getId())%>" startYear="<%=com.maSociete.util.MonProjetUtil.getStartYear()%>" endYear="<%=com.maSociete.util.MonProjetUtil.getEndYear()%>" calendarTooltip="S&eacute;lectionnez la date" key="" patternKey="dd/MM/yyyy" onchange="verifierDateSaisie(this);setModification();" size="10" maxlength="10" mode="E,E,E" /></table>
    Code généré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <table><tr><th valign="top" class="null" id="dateDE3_341922L"><span class="null"></span></th><td valign="top" class="null" id="dateDE3_341922F" style=""><input type="text" name="dateDE3" maxlength="10" size="10" value="" onchange="verifierDateSaisie(this);setModification();"><a href="javascript://" onclick="showCalendar(2008,12,18,'dd/MM/yyyy','tableauSyntheseCIForm','dateDE3',event,1998,2018);"><img alt="S&eacute;lectionnez la date" border="0" src="/MONPROJET/inc/images/treeviewImg/calendar.gif"></a><img name="dateDE3required" src="/MONPROJET/inc/images/treeviewImg/clearpixel.gif"></td></tr></table>
    Un grand merci.

  4. #4
    Expert confirmé

    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
    Par défaut
    Ben de rien. Je ne t'ai pas aidé beaucoup sur ce coup-là.

    Vu que tu travailles avec de très vieilles versions de Struts et Struts-Layout, il est logique que les EL ne soient pas interprétées.
    Donc, dans ce cas, il faut effectivement utiliser une scriptlet.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/07/2008, 15h24
  2. Réponses: 5
    Dernier message: 25/06/2008, 15h06
  3. Réponses: 1
    Dernier message: 01/10/2007, 16h32
  4. [Struts-Layout] Allouer un ID à un <layout:panel>
    Par TSalm dans le forum Struts 1
    Réponses: 2
    Dernier message: 23/02/2007, 09h28
  5. [Struts-Layout] exception quand j'utilise <layout:submit&
    Par jahjah42 dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/11/2005, 11h17

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