Bonjour,
J'essaie de créer un bête tag qui simule un <c: out />.
Je veux donc pouvoir afficher une valeur en faisant : <perso:afficher value="${maValeur} />
Voici les différents fichiers que j'ai :
perso.tld
...
<tag>
<name>afficher</name>
<tag-class>tags.Afficher</tag-class>
<attribute>
<name>value</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
...
|
Afficher.java
Code :
- ...
- public class Afficher extends TagSupport {
- private String value;
- private JspWriter out;
- public int doStartTag() throws JspException {
- out = pageContext.getOut();
- try {
- out.print(value);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return SKIP_BODY;
- }
- public void setValue(String value) {
- this.value = value;
- }
- }
|
Et la JSP avec laquelle je teste :
Code :
- <%@ page language="Java" import="java.util.*" %>
- <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
- <%@ taglib uri="http://perso" prefix="perso" %>
- <c:forEach var="maValeur" begin="1" end="5">
- <c:out value="${maValeur}" /> = <perso:afficher value="${maValeur}" />
- <br/>
- </c:forEach>
|
Voici ce que j'obtiens dans mon navigateur :
1 = ${maValeur}
2 = ${maValeur}
3 = ${maValeur}
4 = ${maValeur}
5 = ${maValeur}
|
Le problème est donc que le contenu de mon attribut "value" (ici une EL) n'est pas interpreté (alors qu'avec la balise c: out, oui).
J'ai essayé de passer le "rtexprvalue" à true dans mon tld, mais ça ne change rien (et de toute façon d'après ce que j'ai lu, ça ne sert pas à ça).
Quelqu'un aurait une idée ?
Message édité par _john_doe_ le 08-05-2006 à 17:41:46