2012-03-20 12 views
6

मेरे पास एक इंटरसेप्टर है जो HandlerInterceptorAdapter बढ़ाता है।स्प्रिंग एमवीसी इंटरसेप्टर addObject

जब मैं अपने ModelAndView पर कोई ऑब्जेक्ट जोड़ता हूं तो यह मेरे यूआरएल में पथ चर के रूप में भी जोड़ा जाता है लेकिन मुझे वह नहीं चाहिए।

@Override 
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { 
    if (null == modelAndView) { 
     return; 
    } 

    log.info("Language in postHandle: {}", LocaleContextHolder.getLocale()); 
    modelAndView.addObject("selectedLocale", LocaleContextHolder.getLocale()); 
} 

जब मैं नियंत्रक अपने आप में मेरी ModelAndView के लिए कुछ जोड़ने के लिए, यह यूआरएल में प्रकट नहीं होता।

+0

मैं गलत ... मैं HandlerInterceptorAdapter – wvp

उत्तर

11

मेरा संदेह यह है कि नियंत्रक ने रीडायरेक्ट व्यू वापस कर दिया है। जब आप RedirectView द्वारा उपयोग किए गए मॉडल में विशेषताओं को जोड़ते हैं, तो स्प्रिंग URL पर विशेषताओं का सामना करेगा।

ModelAndView ऑब्जेक्ट के अंदर देखने का प्रयास करें ताकि यह देखने के लिए कि दृश्य RedirectView है, और यदि ऐसा है, तो लोकेल विशेषता जोड़ें।

+0

कैसे साथ समस्या को हल करने के लिए था एक रीडायरेक्ट व्यू? – wvp

+0

मैंने अभी आपको बताया था कि कैसे। – skaffman

+0

लेकिन मुझे लोकेल विशेषता की आवश्यकता है? मैं वर्तमान में उपयोग की जाने वाली भाषा – wvp

0

मैंने कोड संपादित किया है और यदि कोई रीडायरेक्ट व्यू है तो एक चेक जोड़ा गया है। यदि नहीं, तो मैं अतिरिक्त मॉडल ऑब्जेक्ट्स जोड़ूंगा।

@Override 
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { 
    if (null == modelAndView) { 
     return; 
    } 

    log.info("Language in postHandle: {}", LocaleContextHolder.getLocale()); 

    if(!(modelAndView.getView() instanceof RedirectView)) { 
     addAdditionalModelObjects(request, modelAndView); 
    } 
    } 
0

मैं बजाय इस समस्या को हल प्राप्त करने के लिए अनुरोध पर setAttribute इस्तेमाल किया

request.setAttribute("jsFiles", children); 
6

प्रयास करें इस

import static org.springframework.web.servlet.view.UrlBasedViewResolver.REDIRECT_URL_PREFIX; 

private boolean isRedirectView(ModelAndView mv) { 

    String viewName = mv.getViewName(); 
    if (viewName.startsWith(REDIRECT_URL_PREFIX)) { 
     return true; 
    } 

    View view = mv.getView(); 
    return (view != null && view instanceof SmartView 
      && ((SmartView) view).isRedirectView()); 
} 
संबंधित मुद्दे