【发布时间】:2011-08-30 10:21:35
【问题描述】:
是一种在 JSP 中访问视图名称的方法(profile 在下面的示例中)还是我需要将此名称添加到模型中?
@RequestMapping(value="/user/account", method=RequestMethod.GET)
return "profile";
}
【问题讨论】:
标签: spring-mvc
是一种在 JSP 中访问视图名称的方法(profile 在下面的示例中)还是我需要将此名称添加到模型中?
@RequestMapping(value="/user/account", method=RequestMethod.GET)
return "profile";
}
【问题讨论】:
标签: spring-mvc
我最近遇到了同样的问题。可能有解决此问题的官方方法,但我找不到。我的解决方案是创建一个拦截器来将视图名称放入模型中。
我的拦截器很简单:
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>
【讨论】:
${requestScope['javax.servlet.forward.servlet_path']}
【讨论】:
仅适用于将搜索 Thymeleaf 解决方案的人:
${#httpServletRequest.getServletPath()}
【讨论】:
您可以在jsp页面中获取视图名称,如下所示:
${pageContext.request.servletPath}
【讨论】:
/WEB-INF/pages/profile.jsp,但需要profile