在下面的代码中,第一个循环遍历给定类的字段(由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
(数字不同)。
任何人都知道如何获得注释的真实姓名?
答案 0 :(得分:1)
您正在使用java.lang.annotation.Annotation
。当您在getClass()
上致电Annotation
时,您将获得代理。您需要拨打annotationType()
。
将item2[class].simpleName
更改为item2.annotationType().simpleName
。