Spring MVC:如何在JSP中获取视图名称?

时间:2011-08-30 10:21:35

标签: spring-mvc

是一种在JSP中访问视图名称的方法(在下面的示例中为profile),还是我需要将此名称添加到模型中?

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

4 个答案:

答案 0 :(得分:15)

我最近遇到了同样的问题。可能有一种正式的方法来解决这个问题,但我找不到它。我的解决方案是创建一个拦截器,将视图名称放入模型中。

我的拦截器非常简单:

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);
    }

}

在spring配置中注册它也很简单(使用命名空间配置):

<mvc:interceptors>
    <beans:bean class="ViewNameInModelInterceptor" />
</mvc:interceptors>

答案 1 :(得分:8)

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

答案 2 :(得分:3)

仅适用于寻找Thymeleaf解决方案的人:

${#httpServletRequest.getServletPath()}

答案 3 :(得分:2)

您可以在jsp页面中获取视图名称,如下所示:

${pageContext.request.servletPath}