Bonjour,

C'est mon tout premier message sur ce forum et la question que je vais vous poser risque de vous paraitre digne d'un débutant.

Est-il possible de placer des expressions du type ${expression} dans les attributs d'un tag <jsp:useBean> et <jsp:setProperty> ?

par exemple,

Code jsp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
<c:set var="idExemple" value="instanceDeMaClasse"/>
<jsp:useBean id="${idExemple}" scope="page" class="monpackage.maclasse"/>

Je place ma question dans son contexte :

la page dont je vous soumets le code ci-dessous reçoit une pléiade de paramètres (paramName = paramValue), dont certains qui sont volontairement du type idAttribut_idPersonne = valeurAttribut. Par exemple, anneeDeNaissance_conjoint = 1978.

Le but est d'attraper tous les paramètres de ce type pour en attribuer la nouvelle valeur à l'attribut approprié de la personne appropriée. Dans l'exemple proposé ci-dessus, la Personne ayant l'id "conjoint" se verra changer son "anneeDeNaissance" à 1978.

Vous l'aurez deviné, je me sers d'un bean "Personne" dont le code (est-il vraiment nécessaire ?) est donné ci-après.

Code de la jsp, commenté

Code jsp : 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
 
<%@page contentType="text/plain" pageEncoding="UTF-8" %>
<%@page isELIgnored="false" %>
<%@page import="metier.assure.Personne" %>
 
<%-- Java Standard Tag Library --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
 
<%-- je récupère tous les paramètres de la requête --%>
<c:forEach items="${param}" var="p">
    <c:choose>
<%-- traitement spécial pour ceux qui contiennent un tiret bas --%>
    <c:when test="${fn:contains(p.key,'_')}">
<%-- je stocke attribut et id dans un tableau --%>
        <c:set var="psplit" scope="page" value="${fn:split(p.key,'_')}"/>
<%-- test qui affiche correctement id, son attribut et la valeur à appliquer --%>
        id personne : ${psplit[1]} , attribut : ${psplit[0]} , valeur : ${param[p.key]} <br/>
<%-- et là ca coince… je veux appeler le bean identifié dans le paramètre :_( --%>
        <jsp:useBean id="${psplit[1]}" scope="page" class="metier.assure.Personne"/>
<%-- ici aussi je suppose --%>
        <jsp:setProperty name="${psplit[1]}" property="${psplit[0]}" value="${param[p.key]}"/>
    </c:when>
    <c:otherwise>
<%-- test pour les autres types de paramètre --%>
        parametre : ${p.key}, valeur : ${param[p.key]}<br/>
    </c:otherwise>
    </c:choose>
</c:forEach>

Le code du bean Personne :

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
 
package metier.assure;
 
public class Personne {
 
    /** Année de naissance */
    Integer adn;
 
    public Personne(){
    }
 
    public Integer getAdn() {
        return adn;
    }
 
    public void setAdn(Integer ddn) {
        this.adn = adn;
    }
}
Pour information, l'erreur que je rencontre dans le log Tomcat est dans le prochain message.

Pourriez-vous m'aider ? Je vous avoue que je m'attends à la réponse courte que je redoute le plus ("tu peux pas.")…