目前我有以下代码:
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()
时这个名字没有出现。
答案 0 :(得分:1)
你可以尝试:
String name = tag.getClass().getName();
if (tag instanceof TagAdapter) {
name = ((TagAdapter)tag).getAdaptee().getClass().getName();
}
parents.append("child of ").append(name).append("\n");