我有一个非标准的Spring MVC项目。用XML响应。是否可以创建一个视图(jsp页面),以显示所有接受的(不是必需的)控制器,映射和参数。
根据答案,我有:
@RequestMapping(value= "/endpoints", params="secure", method = RequestMethod.GET) public @ResponseBody String getEndPointsInView() { String result = ""; for (RequestMappingInfo element : requestMappingHandlerMapping.getHandlerMethods().keySet()) { result += "<p>" + element.getPatternsCondition() + "<br>"; result += element.getMethodsCondition() + "<br>"; result += element.getParamsCondition() + "<br>"; result += element.getConsumesCondition() + "<br>"; } return result; }
我没有得到任何信息 @RequestParam
@RequestParam
随着RequestMappingHandlerMappingSpring 3.1,你可以轻松浏览端点。
RequestMappingHandlerMapping
The controller :
@Autowire private RequestMappingHandlerMapping requestMappingHandlerMapping; @RequestMapping( value = "endPoints", method = RequestMethod.GET ) public String getEndPointsInView( Model model ) { model.addAttribute( "endPoints", requestMappingHandlerMapping.getHandlerMethods().keySet() ); return "admin/endPoints"; }
The view :
<%@ page session="false" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head><title>Endpoint list</title></head> <body> <table> <thead> <tr> <th>path</th> <th>methods</th> <th>consumes</th> <th>produces</th> <th>params</th> <th>headers</th> <th>custom</th> </tr> </thead> <tbody> <c:forEach items="${endPoints}" var="endPoint"> <tr> <td>${endPoint.patternsCondition}</td> <td>${endPoint.methodsCondition}</td> <td>${endPoint.consumesCondition}</td> <td>${endPoint.producesCondition}</td> <td>${endPoint.paramsCondition}</td> <td>${endPoint.headersCondition}</td> <td>${empty endPoint.customCondition ? "none" : endPoint.customCondition}</td> </tr> </c:forEach> </tbody> </table> </body> </html>
你也可以在Spring <3.1中使用DefaultAnnotationHandlerMapping代替RequestMappingHandlerMapping。但是你不会获得相同级别的信息。
DefaultAnnotationHandlerMapping
有了它们,DefaultAnnotationHandlerMapping你将只有端点路径,而没有关于它们的方法,消耗,参数的信息。