Spring MVC: Как получить view-name в JSP? - PullRequest
9 голосов
/ 30 августа 2011

Есть ли способ получить доступ к имени представления в JSP (profile в примере ниже) или мне нужно добавить это имя в модель?

@RequestMapping(value="/user/account", method=RequestMethod.GET)
    return "profile";
}

Ответы [ 4 ]

14 голосов
/ 23 июля 2012

Я недавно столкнулся с этой же проблемой. Может быть официальный способ решить эту проблему, но я не смог его найти. Мое решение состояло в том, чтобы создать перехватчик для помещения имени вида в модель.

Мой перехватчик очень прост:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class ViewNameInModelInterceptor extends HandlerInterceptorAdapter {

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {

        if (modelAndView != null) {
            modelAndView.addObject("springViewName", modelAndView.getViewName());
        }
        super.postHandle(request, response, handler, modelAndView);
    }

}

И зарегистрировать его в весеннем конфиге тоже довольно просто (используя конфигурацию пространства имен):

<mvc:interceptors>
    <beans:bean class="ViewNameInModelInterceptor" />
</mvc:interceptors>
8 голосов
/ 29 сентября 2011

$ {requestScope [ 'javax.servlet.forward.servlet_path']}

3 голосов
/ 17 октября 2014

Только для людей, которые будут искать решение Thymeleaf:

${#httpServletRequest.getServletPath()}
2 голосов
/ 30 августа 2011

Вы можете получить имя представления на странице jsp, как показано ниже:

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