我有一个非标准的SpringMVC项目。用xmls响应。是否可以创建一个视图(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
最佳答案
使用Spring3.1中的RequestMappingHandlerMapping
可以轻松浏览端点。
控制器:
@Autowire
private RequestMappingHandlerMapping requestMappingHandlerMapping;
@RequestMapping( value = "endPoints", method = RequestMethod.GET )
public String getEndPointsInView( Model model )
{
model.addAttribute( "endPoints", requestMappingHandlerMapping.getHandlerMethods().keySet() );
return "admin/endPoints";
}
视图:
<%@ 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>
您也可以使用springDefaultAnnotationHandlerMapping而不是
RequestMappingHandlerMapping
来完成此操作。但你的信息水平不一样。使用
DefaultAnnotationHandlerMapping
时,您将只有端点路径,没有关于其方法、消耗、参数的信息…