Как показать все контроллеры и отображения в представлении - PullRequest
15 голосов
/ 19 марта 2012

У меня нет стандартного проекта 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

1 Ответ

28 голосов
/ 19 марта 2012

С помощью RequestMappingHandlerMapping в Spring 3.1 вы можете легко просматривать конечные точки.

Контроллер:

@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>

Вы можететакже сделайте это с Spring <3.1, с <code>DefaultAnnotationHandlerMapping вместо RequestMappingHandlerMapping.Но у вас не будет такого же уровня информации.

С DefaultAnnotationHandlerMapping у вас будет только путь к конечным точкам, без информации об их методах, расходах, параметрах ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...