2010-07-25 13 views
8

मुझे इसका समाधान नहीं मिल रहा है, और यह मुझे पागल कर रहा है। मेरे पास @ नियंत्रक मैप किया गया है जो @RequestMapping का उपयोग करके कई विधियों का जवाब देता है। मैं उन तरीकों में से एक को डिफॉल्ट के रूप में टैग करना चाहता हूं जब कुछ और विशिष्ट निर्दिष्ट नहीं किया जाता है। उदाहरण के लिए:एनोटेशन का उपयोग कर SpringMVC में डिफ़ॉल्ट विधि कैसे बनाएं?

@Controller 
@RequestMapping("/user/*") 
public class UserController { 

    @RequestMapping("login") 
    public String login(MapModel model) {} 

    @RequestMapping("logout") 
    public String logout(MapModel model) {} 

    @RequestMapping("authenticate") 
    public String authenticate(MapModel model) {} 
} 

तो/उपयोगकर्ता/लॉगिन -> प्रवेश पद्धति,/उपयोगकर्ता/लॉगआउट -> लॉगआउट, आदि मैं इसे बनाने के लिए इतना है कि किसी के लिए/उपयोगकर्ता फिर एक के लिए मार्गों हो जाता है तो यह करना चाहते हैं इन तरीकों का। हालांकि, मुझे @RequestMapping पर कुछ भी दिखाई नहीं देता है जो मुझे इन तरीकों में से एक को डिफ़ॉल्ट हैंडलर के रूप में निर्दिष्ट करने की अनुमति देगा। मुझे यह भी करने के लिए कक्षा में इस्तेमाल होने वाली किसी अन्य टिप्पणी को भी नहीं देखा जा सकता है। मुझे संदेह है कि यह अस्तित्व में नहीं है।

मैं वसंत 2.5.6 का उपयोग कर रहा हूं। क्या यह 3.0.0 में हल हो गया है? मैं बस इसे काम करने के लिए वसंत हैक कर सकता हूं क्योंकि यह काफी परेशान है यह अधिक सरल नहीं है।

अग्रिम में धन्यवाद।

+0

+1 अद्भुत प्रश्न के लिए धन्यवाद! –

उत्तर

12

इस जवाब पर एक नज़र डालें:

Spring MVC and annotated controllers issue

क्या होगा यदि आप के साथ एक विधि व्याख्या:

Spring 3.0 MVC + Hibernate : Simplified with Annotations – Tutorial

:

@RequestMapping(method = RequestMethod.GET) 

आप यहाँ एक उदाहरण देख सकते

वही व्यवहार देखा जा सकता है n यहाँ:

Spring Framework 3.0 MVC by Aaron Schram

+3

एक विधि पर @RequestMapping (विधि = RequestMethod.GET) के साथ एनोटेट करके यह काम करता है। धन्यवाद। हालांकि, पहला लिंक एक ही समस्या नहीं थी और लागू नहीं था। अन्य लिंक अधिक उपयोगी थे। – chubbsondubs

5

लघु जवाब (पेज 21 पर नज़र): मैं कैसे बस एक सरल टैग के साथ डिफ़ॉल्ट के रूप में एक विधि निर्दिष्ट करने के लिए पता नहीं है।

लेकिन इस है ...

मैं नहीं पता है वसंत का कौन सा संस्करण में इस लागू किया गया था, लेकिन आप 3.1.2 में @RequestMapping करने के लिए कई value रों प्रदान कर सकते हैं।

@Controller 
@RequestMapping("/user") 
public class UserController { 

    @RequestMapping(value = {"", "/", "/list"}, method = RequestMethod.GET) 
    public String listUsers(ModelMap model) { } 

    @RequestMapping(value = "/add", method = RequestMethod.POST) 
    public ModelAndView add(HttpServletRequest request, ModelMap model) { } 

} 

निम्न URL तो listUsers() को मैप:: तो मैं यह करने के

0

मैं RequestMapping के मूल्य बिना एक डिफ़ॉल्ट विधि बन जाएगा वहाँ पर। कृपया विधि डिफ़ॉल्ट कॉल() नीचे देखें। फिर आप बस उन्हें यूआरएल के साथ कॉल कर सकते हैं: [yourhostname]/उपयोगकर्ता

@Controller 
@RequestMapping("/user") 
public class UserController { 

    @RequestMapping(method = RequestMethod.GET) 
    public String defaultCall(MapModel model) { 
     //Call the default method directly, or use the 'forward' String. Example: 
     return authenticate(model); 
    } 

    @RequestMapping("login") 
    public String login(MapModel model) {} 

    @RequestMapping("logout") 
    public String logout(MapModel model) {} 

    @RequestMapping("authenticate") 
    public String authenticate(MapModel model) {} 
} 

रेफरी: Spring Framework Request Mapping

0

बस अपने डिफ़ॉल्ट विधि पर @RequestMapping("**") का उपयोग कर काम करना चाहिए। किसी और विशिष्ट मैपिंग को अभी भी उनके अनुरोधों को उठाया जाना चाहिए। मैं कभी-कभी डिफ़ॉल्ट विधियों को सेट करने के लिए इस विधि का उपयोग करता हूं।वर्तमान में वसंत v4.3.8.RELEASE का उपयोग कर।

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