2013-06-20 12 views
16

पर पुनर्निर्देशित करें मैं अपने आवेदन में स्प्रिंग 3 और टाइल्स 2 का उपयोग कर रहा हूं और पुनर्निर्देशन के साथ कुछ परेशानी है। अधिमानतः, मैं कंट्रोलर 1 विधि से कंट्रोलर 2 विधि को कॉल या रीडायरेक्ट करने में सक्षम होना चाहता हूं, लेकिन अब तक असफल रहा है।एक नियंत्रक विधि से दूसरे नियंत्रक विधि

मैंने पृष्ठदृश्य .properties फ़ाइल में एक नई प्रविष्टि बनाने की कोशिश की है। इस तरह से मैं इस नाम को कंट्रोलर 1 से वापस कर सकता हूं और यह एक्सएमएल फाइलों से मेरे टाइल्स डीफ़ नाम को देखेगा। बजाय का उपयोग टाइल्स defs में देखो करने के लिए की -

createRejectionEmail.(parent)=tilesView 
createRejectionEmail.url=createRejectionEmail.page 

redirectRejectionEmail.(class)=org.springframework.web.servlet.view.RedirectView 
rediectRejectionEmail.contextRelative=true 
redirectRejectionEmail.url=createRejectionEmail.page 

लेकिन, जब मैं अपने यूआरएल नीचे दिखाया गया है की तरह लौटने की कोशिश यूआरएल के हिस्से के रूप createRejectionEmail शामिल हैं। mav.setViewName ("redirectRejectionEmail"); वापसी एमएवी;

<definition name="createRejectionEmail.page" extends="brandedLayout"> 
    <put-attribute name="targetFunction" value="status" /> 
    <put-attribute name="content" value="/WEB INF/jsp/pages/status/createRejectionEmail.jsp" /> 
</definition> 

मेरी वर्तमान कॉन्फ़िगरेशन नीचे है।

<bean id="resourceViewResolver" 
class="org.springframework.web.servlet.view.ResourceBundleViewResolver" 
p:order="0" p:basename="config.spring.viewresolution.pageviews"/> 



<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
<property name="definitions"> 
    <list> 
    <value>/WEB-INF/jsp/**/views.xml</value> 
    </list> 
</property> 
</bean> 

कोई भी मदद और मार्गदर्शन की सराहना की जाएगी!

उत्तर

38

अपने नियंत्रक से आप रिटर्न प्रकार को मॉडल और व्यू और नीचे कोड वापस करने के लिए बदल सकते हैं। यह अनुरोध को फिर से निर्देशित करेगा और नए यूआरएल के लिए नियंत्रक को कॉल करेगा।

return new ModelAndView("redirect:/myURL"); 

वैकल्पिक रूप से आप अपने नियंत्रक विधि में HttpServletResponse में ले सकते हैं और एक रीडायरेक्ट वापस कर सकते हैं।

public void myController(HttpServletResponse response){ 
response.sendRedirect("/myURL"); 
} 
+0

आपकी प्रतिक्रिया के लिए हाय धन्यवाद। मैंने कोशिश की और मुझे निम्नलिखित मिलते हैं। 'स्प्रिंग-एमवीसी-फॉर-ओए' नाम के साथ सर्वलेट में नाम 'रीडायरेक्ट: /myapppath/status/displayEmailRejectionForm.html' के साथ दृश्य को हल नहीं किया जा सकता है। शौडल मैं एक अलग दृश्य रिज़ॉल्वर का उपयोग कर रहा हूँ? वर्तमान में, हम संसाधन BundleViewResolver का उपयोग कर रहे हैं tiles2 – Carl

+0

OK Whew! यह काम कर रहा है! आपकी मदद के लिए बहुत बहुत धन्यवाद। मुझे अपने आवेदन संदर्भ में UrlBasedViewResolver भी जोड़ना पड़ा। जवाब देने के लिए समय लेने में मैं वास्तव में सराहना करता हूं! – Carl

+0

यह @RequestMapping एनोटेटेड विधियों के लिए स्ट्रिंग रिटर्न प्रकार के साथ भी ठीक काम कर रहा है। कार्ल के मामले की तरह कुंजी UrlBasedViewResolver क्लास कॉन्फ़िगरेशन को जोड़ना है। – Marin

6
@RequestMapping(value = "/timeout", method = RequestMethod.GET) 
    public ModelAndView loginForm(HttpServletRequest request,HttpServletResponse response) { 


       return new ModelAndView("redirect:/app/timeout"); 

    } 

इस विधि हैंडलर कॉल तो यह/ऐप्स/टाइमआउट नियंत्रक को अनुप्रेषित है।

+0

एक आकर्षण की तरह काम करता है, और सबसे अच्छा यह है कि यदि आपके आवेदन में संदर्भ है तो यह विधि स्पष्ट रूप से पारित होने की आवश्यकता के बिना इसे हल करती है। – deFreitas

संबंधित मुद्दे