[英]Spring MVC equivalent to ASP.NET RouteData
我試圖提取請求路由數據,類似於ASP.NET中的RouteData對象,以獲取請求的控制器和操作。 我正在嘗試在過濾器中執行此操作,但是特定的Spring實現就足夠了。
有什么辦法做到這一點?
謝謝。
這不能從過濾器內部完成。 您必須使用HandlerInterceptor
實現來實現。 在preHandle
方法中,您可以這樣獲取PathVariables:
Map pathVariables = (Map)request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
這是一個簡短的編譯示例:
實現HandlerMapping接口:
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
public class ParameterValidationHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Map pathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
在應用程序中注冊攔截器:
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new ParameterValidationHandlerInterceptor());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.