Bonjour
Je veux créer une balise jsp pour simplifier l'écriture de mes pages.
J'ai un petit problème avec les EL dans les jsp.
1) D'abord une petite question : si je veux créer une balise personnalisée qui génère du code jsp, qui lui-même sera réinterprété :
- Si je génère le code en Java dans une classe représentant ma balise, avec "this.getJspContext().getOut().println(mon-code-jsp-à-réinterpréter)", ça ne marche pas (le code est directement écrit dans la page) ?
- Si je génère le code en Java dans un fragment de jsp représentant ma balise, avec <%= mon-code-jsp-à-réinterpréter %> ça ne marche pas (le code est directement écrit dans la page) ?
- Si je génère le code dans un fragment de jsp en écrivant simplement le code jsp qui doit remplacer la balise, ça marche ?
Note : j'ai essayé tout ce que je viens de décrire et il me semble que ça fonctionne comme de l'ai présenté, mais j'aimerais avoir une confirmation, pour être certain de comprendre ce qui est réinterprété et ce qui est directement écrit dans la page...
2) Ensuite ma question principale : j'aurai besoin d'imbriquer des El l'une dans l'autre (ou de faire autrement, ça me va bien aussi).
Je veux créer une balise <texte> qui me permette de générer le code de création d'un champ texte lié à un objet java grâce à Spring MVC. Le code avec Spring (code que je voudrais générer) :
Peu importe si le code ne vous parle pas trop, voilà ce qu'il y a à savoir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <spring:bind path="objetModeleFormulaire.texte1"> <input type="text" name="texte1" value="${objetModeleFormulaire.texte1}"> ${status.errorMessage} </spring:bind>
- objetModeleFormulaire est le nom d'un objet qui se trouve dans la requête http
- texte1 est le nom d'un attribut de cet objet
- J'aimerais créer une balise de cette forme :
La balise a deux attributs donnees et attribut qui contiennent *le nom* de l'objet et *le nom* de l'attribut à inscrire dans le code à générer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<form:texte donnees="objetModeleFormulaire" attribut="texte1" />
La balise doit générer le code de 4 lignes indiqué plus haut.
Mon problème : comment écrire le code de cette balise jsp ?
- Je n'ai pas réussi avec une classe Java puisque je n'arrive pas à réinterpréter du code jsp généré et que je dois générer du code contenant des balises de Spring.
- Je n'ai pas réussi avec un fragment de jsp : en gros je voudrais écrire quelque chose comme ça :
L'idée du
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ tag isELIgnored="false" %> <%@ tag body-content="scriptless" %> <!-- Attributs de la balise --> <%@ attribute name="donnees" required="true" %> <%@ attribute name="attribut" required="true" %> <!-- Code de la balise --> <spring:bind path="${donnees}.${attribut}"> <input type="text" name="${attribut}" value="${${donnees}.${attribut}}"> ${status.errorMessage} </spring:bind>est de récupérer les valeurs des attributs "donnees" et "attribut" (qui doivent être "objetModeleFormulaire" et "texte1" dans mon exemple) pour générer l'expression : "${objetModeleFormulaire.texte1}". Mais comme je ne peux pas imbriquer des EL, je ne peux pas écrire ça.
Code : Sélectionner tout - Visualiser dans une fenêtre à part value="${${donnees}.${attribut}}"
Et si j'écris l'expression avec un '\' devant :le champ de texte contient la valeur ${objetModeleFormulaire.texte1}, non interprétée (ce qui était prévisible).
Code : Sélectionner tout - Visualiser dans une fenêtre à part \${${donnees}.${attribut}}
Voilà, voilà, toute aide, remarque, indice ou réponse sur l'une de mes questions serait vraiment la bienvenue, merci.
Partager