복붙노트

[SPRING] 모든 컨트롤러와 매핑을보기에 표시하는 방법

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. ==============================

    1.Spring 3.1에서 RequestMappingHandlerMapping을 사용하면 쉽게 끝점을 찾아 볼 수 있습니다.

    Spring 3.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>
    

    RequestMappingHandlerMapping 대신 DefaultAnnotationHandlerMapping을 사용하여 Spring <3.1에서도이 작업을 수행 할 수 있습니다. 그러나 당신은 같은 수준의 정보를 가지지 않을 것입니다.

    DefaultAnnotationHandlerMapping을 사용하면 메서드에 대한 정보가 없으면 끝점 경로 만 사용하고, 매개 변수를 사용합니다.

  2. from https://stackoverflow.com/questions/9766800/how-to-show-all-controllers-and-mappings-in-a-view by cc-by-sa and MIT license