可以使用Java Reflection API解决。通过创建自定义标签库。方法如下所示
Class c = Class.forName("Your Controller");
for(Method m :c.getMethods()){
if(m.getName()=="Your Method"){
Annotation cc = m.getAnnotation(RequestMapping.class);
RequestMapping rm = (RequestMapping)cc;
for(String s:rm.value()){
System.out.println(s);
}
}
}
您可能面临的问题是
1.Path Variable > 像这样 /pet/show/{id} 所以应该支持路径名和值的集合,然后在返回 url 之前替换这个 String.replace()
2.方法覆盖>只有一种方法没有问题。如果方法覆盖 需要提供您真正想要的参数类型的支持序列,例如 Method.getParametersType()
3.多个URL到单个方法>如@RequestMapping(value={“/”, “welcome”})。所以简单的规则是选择第一个。
4.蚂蚁喜欢样式 url > 像这样解决这个问题是通过使用多个url,在最后一个例如中放置蚂蚁般的样式。*.do
@RequestMapping(value={"/pet","/pet/*.do"})
所以可能的链接标签样式是
<my:link controller="com.sample.web.PetController" method="show" params="java.lang.Integer">
<my:path name="id" value="1" />
</my:link>
其中,如果没有方法覆盖,则 parmas 属性是可选的。
可能是我留下来想一些问题。:)