Как я могу узнать имя тега JSP в Java? - PullRequest
1 голос
/ 08 июля 2010

В настоящее время у меня есть следующий код:

Tag tag = getParent();

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

, когда он запускается, я получаю следующее:

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 - это класс Java, поэтому я могу получитьимя от getName().К сожалению, ни Tag, ни TagAdapter не дают мне способов узнать имя фактического тега.Class.getName() возвращает javax.servlet.jsp.tagext.TagAdapter, только если тегами являются .tag файлы.Я понимаю, что файлы .tag в конечном итоге преобразуются в файлы .java, а затем компилируются в файлы .class.Поэтому, если у меня есть тег с именем awesome.tag, соответствующий файл будет awesome_tag.java.Я не понимаю, почему это имя не появляется, когда я звоню getName().

1 Ответ

1 голос
/ 08 июля 2010

Вы можете попробовать:

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