2009-12-04 12 views
6

स्ट्रैट्स 1 में, स्ट्रैट्स-config.xml में, एक घोषणा जैसे:क्या स्प्रिंग में किसी अन्य यूआरएल में यूआरएल मैप करने का कोई तरीका है?

<action path="/first" forward="/second.do"> 

क्या वसंत में कुछ भी संभव है, या क्या मैं केवल एक नियंत्रक के लिए एक यूआरएल मैप कर सकता हूं? मैं वसंत 2.5.x का उपयोग कर रहा हूँ।

मैं निश्चित रूप से यूआरएल को उसी नियंत्रक के रूप में मैप कर सकता हूं:

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
    <props> 
     <prop key="/first.do">theController</prop> 
     <prop key="/second.do">theController</prop> 
     ... 

या शायद org.springframework.web.servlet.mvc.ParameterizableViewController का उपयोग करें और कुछ ऐसा करें:

<bean id="theDummyController" class="org.springframework.web.servlet.mvc.ParameterizableViewController"> 
    <property name="viewName" value="forward:second.do"/> 
</bean> 

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
    <props> 
     <prop key="/first.do">theDummyController</prop> 
     <prop key="/second.do">theController</prop> 
     ... 

मुझे पता है कि मैं चीजों को जटिल बना सकता हूं और मैं केवल काम करने वाले साधारण सामानों के साथ रहना चाहिए, लेकिन मैं इसे इस तरह के बयान की तरह अधिक होना चाहूंगा: "यह यूआरएल वास्तव में इस अन्य यूआरएल के लिए एक शॉर्टकट (या उपनाम) है" (पूछो मत क्यों ... लंबी कहानी ...) जो ParameterizableViewController के साथ किसी भी तरह दिखाई दे रही है लेकिन पूरी तरह से नहीं।

तो, क्या यह संभव है?

धन्यवाद!

उत्तर

1

-florin मैं अंत में एक अलग URL हैंडलर मैपिंग जहाँ मैं यूआरएल उपनाम साथ समूहीकृत बना दी।

<bean id="aliasUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <description> 
    <![CDATA[ 
     The following URLs are in fact shortcuts (or aliases) 
     to other URLs etc etc (...I'll spare you the ugly part) 
    ]]> 
    </description> 
    <property name="mappings"> 
    <props> 
     <prop key="/first.do">theController</prop> 
     ... 

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
    <props> 
     <prop key="/second.do">theController</prop> 
     ... 
0

मैं वसंत एमवीसी के साथ पर्याप्त परिचित नहीं हूं कि आप जो चाहते हैं उसे करने का सबसे आसान तरीका जान सकें। हालांकि, UrlRewriteFilter project एक यूआरएल को दूसरे यूआरएल में अग्रेषित करने के लिए नियमों को सेटअप करना आसान बनाता है।

0

आप आसानी से कुछ कर सकते हैं जो आपको यह निर्दिष्ट करने की अनुमति देता है कि "यह यूआरएल वास्तव में HandlerInterceptor को लागू करके इस अन्य यूआरएल में शॉर्टकट (या उपनाम) है और आपके कार्यान्वयन में ऐसी संपत्ति है जो यूआरएल का मानचित्र है जिसे रीडायरेक्ट करना चाहिए, या आगे, अन्य यूआरएल के लिए।

अपने एक्सएमएल में आप बस इस इंटरसेप्टर के लिए एक बीन जोड़ें, और इसे कॉन्फ़िगर करें कि कौन से यूआरएल को रीडायरेक्ट करना चाहिए, और SimpleUrlHandlerMapping की इंटरसेप्टर संपत्ति में इंटरसेप्टर का संदर्भ जोड़ें।

+0

मैं भी एक इंटरसेप्टर कि एक यूआरएल पकड़ता और एक अन्य को फ़ॉरवर्ड पर जोड़ने के लिए सोच रहा था, तो तोड़ने के लिए झूठी लौटने: मैं तो क्या निहित मैपिंग सब के बारे में, कुछ की तरह हैं की एक बहुत ही विस्तृत वर्णन का सहारा निष्पादन श्रृंखला। लेकिन हैंडलर मानचित्रण को आने वाले अनुरोध के लिए निष्पादन श्रृंखला को हल नहीं करना है? केवल तभी डिस्पैचर सर्वलेट लौटे चेन में पाए गए हैंडलर और इंटरसेप्टर निष्पादित करेगा। तो मुझे यूआरएल को "कुछ" पर मैप करना होगा और फिर इंटरसेप्टर को बाकी हिस्सों को संभालना होगा। लेकिन मैं इसे किस पर मैप करूँ? –

+0

मुझे वास्तव में यह सुनिश्चित नहीं है कि हैंडलर को प्रत्येक यूआरएल के लिए एक इंटरैप्टर को प्राप्त करने से पहले मैपिंग की आवश्यकता हो, लेकिन यदि ऐसा होता है: 404 पेज पर नहीं मिला (आपको नहीं मिला) और आपको अच्छा होना चाहिए ... –

0

मैं स्प्रिंग कॉन्फ़िगरेशन फ़ाइलों के बाहर यूआरएल-आधारित नियमों का प्रबंधन करने की सिफारिश करता हूं? स्प्रिंग कॉन्फ़िगरेशन फ़ाइलों को साफ रखें और अपने यूआरएल को बाहर लिखें/प्रबंधित करें। http://tuckey.org/urlrewrite/ पर एक नज़र डालें।

मुझे आशा है कि यह मदद करता है,

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