2010-07-08 11 views
1

Actuellement, j'ai le code suivant:Comment puis-je trouver le nom d'une balise JSP en Java?

Tag tag = getParent(); 

while(tag != null) { 
    parents.append("child of ") 
      .append(tag.getClass().getName()) 
      .append("\n"); 
    tag = tag.getParent(); 
} 

quand cela fonctionne, je reçois le texte suivant:

com.mystuff.mvc.tag.MyTag 
child of org.apache.taglibs.standard.tag.rt.core.IfTag 
child of javax.servlet.jsp.tagext.TagAdapter 
child of javax.servlet.jsp.tagext.TagAdapter 
child of javax.servlet.jsp.tagext.TagAdapter 
child of javax.servlet.jsp.tagext.TagAdapter 
child of javax.servlet.jsp.tagext.TagAdapter 

MyTag est une classe Java et donc je peux obtenir le nom de getName(). Malheureusement ni Tag ni TagAdapter ne me donnent des méthodes pour trouver le nom de l'étiquette réelle. Class.getName() renvoie uniquement javax.servlet.jsp.tagext.TagAdapter si les étiquettes sont .tag. Je comprends que les fichiers .tag finissent par être convertis en fichiers .java, puis compilés en fichiers .class. Donc, si j'ai une étiquette appelée awesome.tag alors le fichier correspondant est awesome_tag.java. Je ne comprends pas pourquoi ce nom ne s'affiche pas lorsque j'appelle getName().

Répondre

1

Vous pouvez essayer:

String name = tag.getClass().getName(); 
if (tag instanceof TagAdapter) { 
    name = ((TagAdapter)tag).getAdaptee().getClass().getName(); 
} 
parents.append("child of ").append(name).append("\n"); 
+0

Merci @fd! Ça a marché. –