如何在Java中找出JSP标记的名称?

时间:2010-07-08 00:13:41

标签: java jsp jsp-tags

目前我有以下代码:

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()获取名称。不幸的是,TagTagAdapter都没有给我方法来找出实际标签的名称。如果代码为Class.getName()个文件,则javax.servlet.jsp.tagext.TagAdapter仅返回.tag。据我所知,.tag文件最终会转换为.java个文件,然后编译成.class个文件。因此,如果我有一个名为awesome.tag的标记,则相应的文件为awesome_tag.java。我不明白为什么当我拨打getName()时这个名字没有出现。

1 个答案:

答案 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");