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 :

[bean:define] List avec parametre


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Par défaut [bean:define] List avec parametre
    Bonjour à tous,

    Je voudrais manipuler une liste d'Element (JDOM) afin d'afficher une arborescence html qui correspond à l'arborescence XML de mon Element.
    Pour cela j'aimerais donc utiliser des logic:iterate imbriqués et j'utilise donc des bean:define successifs.
    Seulement quand j'essaie de récupérer les "enfants" de mon Element (fonction: public List getChildren(String name)) il me retourne un objet null (j'ai testé dans le code ce n'est pas vrai).
    Est-ce que le code suivant est complétement farfelu, est-ce que je peux y arriver de cette façon ou va t'il falloir que je deserialise mon XML en Java avant de l'afficher dans une page JSP?

    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
     
    <!-- la première itération fonctionne bien 
    listSubFolder est une List<Element>
    subFolder est donc un Element JDOM-->
    <logic:iterate id="subFolder" name="previewCreForm" property="listSubFolder">
    		<tr>
                                           <!-- je récupère bien la valeur de l element fils(nom) -->
    			<td><bean:write name="subFolder" property="child(nom).text"/></td>
    		</tr>	
    		<!-- mais la ça renvoi null alors que ça ne devrait pas -->
    		<logic:notEmpty name="subFolder" property="children(EdV)">
       			<bean:define name="subFolder" property="children(EdV)" id="listEdV" />
    	   		<logic:iterate id="EdV" name="listEdV" >
    				<tr>
    					<td><bean:write  name="EdV" property="child(nom).text"/></td>
    				</tr>
    			</logic:iterate>
    		</logic:notEmpty>
     
    	</logic:iterate>
    Merci.

  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
    Tu aurais peut-être intérêt à utiliser la librairie XML de la JSTL.

    Sinon, tu dois pouvoir t'en sortir avec une scriptlet :
    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
    <%@ page import="org.jdom.Element"%>
    <%@ page import="java.util.List"%>
     
    <logic:iterate id="subFolder" name="previewCreForm" property="listSubFolder">
    	<tr>
     	   <td><bean:write name="subFolder" property="child(nom).text"/></td>
    	</tr>	
    	<%
    		List listEdV= ((Element)subFolder).getChildren("EdV") ;
    		pageContext.setAttribute("listEdV",listEdV) ;
    	%>
    	<logic:notEmpty name="listEdV">
       		<logic:iterate id="EdV" name="listEdV">
    		<tr>
    		   <td><bean:write name="EdV" property="child(nom).text"/></td>
    		</tr>
    		</logic:iterate>
    	</logic:notEmpty>
    </logic:iterate>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Par défaut
    Merci pour la solution proposée ainsi que le lien vers la librairie XML de JSLT.
    Mais j'ai une ou deux petites questions supplémentaires pour ma compréhension, pourquoi mon code ne fonctionne pas?
    Quelle est la différence entre la fonction child() et la fonction children()?
    C'est juste le type List qui n'est pas accepté?

  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
    Je n'ai pas vraiment d'explications.
    Il y a manifestement un problème avec l'attribut property quand il a la valeur "children(EdV)".
    La méthode getChildren(String name) n'est peut-être pas appelée.
    Il faudrait regarder de près le contenu des classes correspondant aux tags Struts pour comprendre pourquoi cela ne fonctionne pas.

    Par contre, après avoir regardé le contenu de la classe Element, je pense que ceci devrait mieux fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <logic:iterate id="subFolder" name="previewCreForm" property="listSubFolder">
    <tr>
    	<td><bean:write name="subFolder" property="childText(nom)"/></td>
    </tr>	
    	<logic:iterate name="subFolder" property="children" id="EdV">
    	<tr>
    		<td><bean:write name="EdV" property="childText(nom)"/></td>
    	</tr>
    	</logic:iterate>
    </logic:iterate>

Discussions similaires

  1. problème avec bean:define
    Par al3alwa dans le forum Struts 1
    Réponses: 4
    Dernier message: 13/04/2008, 14h18
  2. requete avec parametre sur liste deroulante
    Par warix dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 16/09/2007, 09h34
  3. problème avec bean:define
    Par sissi25 dans le forum Struts 1
    Réponses: 4
    Dernier message: 10/01/2007, 10h23
  4. [Struts] paramètre JS dans un bean:define
    Par Mrlud dans le forum Struts 1
    Réponses: 4
    Dernier message: 09/06/2005, 14h38
  5. [VBA-W] [AUTOMATION]Liste Fonctions/Paramètres
    Par Sunny dans le forum VBA Word
    Réponses: 2
    Dernier message: 05/12/2002, 16h35

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