Есть ли способ узнать точный запрошенный URL в ServletRequest, если этот URL содержит переменные пути? - PullRequest
0 голосов
/ 12 июня 2018

Например, если мой URL-адрес соответствует /app/service/{id}, когда я звоню, request.getRequestURI() дает мне что-то вроде /app/service/10, которое я хочу в том же формате, который указан в моем классе контроллера.Есть ли способ добиться того же?

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

Если вы используете HttpServletRequest request

Вы можете использовать
request.getRequestURL ();

ИЛИ вы можете использовать

String path = request.getPathInfo();
String[] pathParts = pathInfo.split("/");
0 голосов
/ 12 июня 2018

Я использовал Filter вместо этого, HandlerInterceptor работал для меня.Поэтому мой предыдущий код был

public class MyInterceptor implements Filter {

    @Override
    public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) 
               throws IOException, ServletException {
                 final HttpServletRequest req = (HttpServletRequest) request;
                 String url = req.getRequestURI();
                //this was giving me /app/service/10
        }

Теперь я изменил свой код на

 public class MyInterceptor implements HandlerInterceptor {

        @Override
        public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler )
                throws Exception
        {
           String url = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
          //this gives me /app/service/{id}
        }

    }
0 голосов
/ 12 июня 2018

Как вы используете HttpServletRequest request

request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE)
...