无法在jsp页面中获取正确的注释名称

时间:2014-11-01 19:27:19

标签: java jsp reflection annotations field

在下面的代码中,第一个循环遍历给定类的字段(由spring控制器传递给视图),第二个循环遍历每个字段的注释:

<x:Form>
    <c:forEach var="item" items="${command['class'].declaredFields}" varStatus="status">
        <c:forEach var="item2" items="${item.declaredAnnotations}">
            <c:choose>
                <c:when test="${item2['class'].simpleName == 'Checkbox'}">
                    <x:Checkbox/>
                </c:when>
                <c:when test="${item2['class'].simpleName == 'DataList'}">
                    <x:DataList/>
                </c:when>
                <c:when test="${item2['class'].simpleName == 'Input'}">
                    <x:Input/>
                </c:when>
                <c:when test="${item2['class'].simpleName == 'Radiobutton'}">
                    <x:Radiobutton/>
                </c:when>
                <c:when test="${item2['class'].simpleName == 'Select'}">
                    <x:Select/>
                </c:when>
                <c:when test="${item2['class'].simpleName == 'Textarea'}">
                    <x:Textarea/>
                </c:when>
            </c:choose>
        </c:forEach>
    </c:forEach>

    <button type="submit" class="btn btn-default">Enviar</button>
</x:Form>

我的问题是我无法获得注释的真实姓名。 item2[class].simpleName的结果类似于$Proxy55(数字不同)。

任何人都知道如何获得注释的真实姓名?

1 个答案:

答案 0 :(得分:1)

您正在使用java.lang.annotation.Annotation。当您在getClass()上致电Annotation时,您将获得代理。您需要拨打annotationType()

item2[class].simpleName更改为item2.annotationType().simpleName