2009-10-10 6 views
1

J'essaie de créer un fichier jsp tag, qui appellera une classe auxiliaire pour imprimer l'objet d'entrée. J'ai donc créé un fichier /WEB-INF/tags/formatter.tagAccéder à la variable dans les fichiers jsp tag dans une boucle?

<%@ tag import="package.Formatter"%> 
<%@ attribute name="value" required="true" type="java.lang.Object" %>    
<%=Formatter.format(pageContext.getAttribute("value"))%> 

Alors que je peux l'appeler en JSP comme:

<t:formatter value="${obj}" /> 

Mais je trouve que ça ne marchera pas dans une boucle , par exemple Je suppose que je ne devrais pas obtenir l'attribut pageContext. Mais je ne suis pas sur. Quelqu'un sait-il à ce sujet?

+0

Que voulez-vous dire par "ne fonctionne pas"? Avez-vous une erreur ou le mauvais résultat? – moxn

+0

websphere a une exception ArrayIndexOutOfBoundException, lancée par com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.getELExpressions – jackysee

Répondre

0

les opérations suivantes:

D'abord, convertir votre formatter être un haricot Java standard (à savoir rendre la méthode de format non statique, ont aucun constructeur arg, etc.). Le, changer l'étiquette pour être:

<%@ tag import="package.Formatter" %> 
<%@ attribute name="value" required="true" type="java.lang.Object" %> 
<jsp:useBean id="formatter" class="package.Formatter" />    
${formatter.format(value)} 
+0

Toujours le même problème. – jackysee

+0

S'il vous plaît essayer la nouvelle solution –

+0

Dans mon cas, je dois passer deux paramètre. par exemple. $ {formatter.format (valeur, 2)}. Cela entraîne une erreur JSP: impossible d'analyser la fonction EL – jackysee

0

Ajouter suivant. Votre problème est probablement que rien dans la balise "c" n'est traité.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
Questions connexes